Loading

Git && GitHub

第一章 为什么要学Git?

  • 必点天赋。
  • 必然趋势。

 

第二章 Git的简介和安装

Git的简介

  • Git是目前世界上最先进的分布式版本控制系统。

版本管理系统能干什么?

  • 协同开发。
  • 冲突解决。
  • 版本记录。
  • 历史追查。
  • 代码备份。
  • 版本还原。
  • 权限管理。
  • 分支管理。
  • 代码审查。

集中管理型版本管理

  • 经典的集中管理型:CVS、VSS、SVN。
  • 特点:
  • ①实现了大部分开发中对版本管理的需求。
  • ②结构简单,上手容易。

 

  • 集中管理型版本管理的问题:
  • ①版本管理的服务器一旦崩溃,硬盘损坏,代码如何恢复?
  • ②程序员上传到服务器的代码要求是完整版本,但是程序员开发过程中想做小版本的管理,以便追溯查询,怎么破?
  • ③系统正在上线运行,时不时还要修改bug,要增加好几个功能需要好几个月,如何管理几个版本?
  • ④如何管理一个分布在世界各地、互不认识的大型开发团队?

分布式版本管理

 

  • 分布式版本管理的优点:
  • ①容灾能力强。
  • ②本地版本管理。
  • ③异地协作。
  • ④灵活分支。 

常见的Git工具

命令行工具

IDEA插件

GitHub

Git的图形化界面

Git for Windows的安装

 

 

第三章 Git实战操作

设置用户名和邮箱

准备工作

  • 在G盘新建git-project目录。

初始化git版本仓库

  • 命令:
git init

 

  •  示例:

设置项目级别的用户名和密码

  • 命令:
git config user.name "需要配置的用户名"
git config user.email "需要配置的邮箱"

 

  •  示例:

设置系统级别的用户名和密码

  • 命令:
git config --global user.name "需要设置的用户名"
git config --global user.email "需要设置的邮箱"

 

  • 示例:

提交文件

查看文件状态

  • 命令:
git status

 

  • 示例:

将文件添加到暂存区

  • 命令:
git add 文件名(或目录名)

 

  • 示例:

提交文件到本地库

  • 命令:
git commit -m "注释"

 

  • 示例:

查看文件提交记录

  • 命令:
# 查看历史记录
git log 文件名
# 简易查看历史记录
git log --pertty=online 文件名

 

  • 示例:

回退历史

  • 命令:
# 回退到上一次提交
git reset --hard HEAD^
# 回退到n次操作
git reset --hard HEAD~n 

 

  • 示例:

 

版本穿越

  • 命令:
# 查看历史记录的版本号
git reflog 文件名(目录名)
# 版本穿越
git reset --hard 版本号

 

  • 示例:

还原文件

  • 命令:
# 没有将修改的文件提交到暂存区,如果将修改的文件提交到了暂存区请先回退到上个版本
git checkout -- 文件名

 

  • 示例:

删除文件

  • 命令:
#先删除文件再git add,git commit提交

 

  • 示例:

工作区+暂存区+本地库

  • 工作区:电脑本地硬盘目录。
  • 暂存区:一般存放在.git目录下的index文件中。
  • 本地库:工作区中有个隐藏目录.git,它就是Git的本地版本库。

分支

分支的引入

  • 系统上线了,但是产品经理又提出了新的需求,评估一下工期需要两个月,但是同时系统正在上线运行,时不时还需要修改bug,如何管理几个版本?

查看当前分支

  • 命令:
git branch -v

 

  • 示例:

创建分支

  • 命令:
git branch 分支名

 

  • 示例:

切换分支

  • 命令:
git checkout 分支名

 

  • 示例:

 

合并分支

  • 示例:
#先切回需要合并的分支
git checkout 分支名
#合并分支
git merge 另一个分支名

## 比如需要将dev分支的文件合并到master分支上,那么命令如下
## git checkout master
## git merge dev

 

  • 示例:

 

冲突

冲突的原因

  • 冲突一般指同一个文件同一位置的代码,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员手工判断解决冲突。 

合并时冲突

  • 程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。 

 

  •  示例:

 

解决冲突

  • 此时通过git diff可以找到发生冲突的文件及冲突的内容。 

 

  • 示例:

 

 

  • 修改冲突文件内容,再次git add 文件和git commit -m “提交注释”提交文件,后缀MERGING消失,表明冲突解决完成。

 

  • 示例:

 

第四章 GitHub简介、和Git的协同办公

GitHub是什么?

  • GitHub是一个Git项目托管网站,主要提供基于Git的版本托管服务。 

GitHub的网址

注册账号的注意事项

  • 不要使用163的邮箱,有可能收不到验证邮件。
  • 较长时间不使用有可能被GitHub冻结账号。请登录其客服页面https://github.com/contact,填写账号恢复申请。

GitHub的使用流程

团队协作

图解

创建本地库、配置用户名和邮箱以及提交文件

  • 命令: 
# 创建本地库
git init
# 配置用户名和邮箱
git config user.name "用户名"
git config user.email "邮箱"
# 新建文件bixiejianfa.txt
# 将文件加入到暂存区
git add bixiejianfa.txt
# 提交文件
git commit -m "辟邪剑法"

 

  • 示例: 

登录GitHub,创建项目,增加远程地址

  • 命令:
# 远程代码一般为origin
# 远程地址就是GitHub上的项目的地址url
git remote add 远程代号 远程地址

 

  • 示例:在GitHub上创建项目 

 

  • 示例:增加远程地址

推送到远程库

  • 命令:
# 远程代号是指远程链接的代号。
# 分支名是指要提交的分支名称,比如master
git push 远程代号 本地分支名

 

  • 示例:

 

邀请协作者

  • 示例:

clone项目

  • 命令:
git clone 远程地址 新项目目录名(可以省略,如果省略,默认是项目名)

 

  • 示例: 

修改完之后,推送项目

  • 命令: 
# 配置user.name 和user.email 
git config user.name "用户名"
git config user.email "邮箱"
# 修改文件
git add 修改的文件名
# 提交文件
git commit -m "注释"
# 远程代码 git clone之后,远程代码默认为origin
git push 远程代码 本地分支

 

  •  示例:

拉取项目

  • 命令:
# 远程代号指的是远程链接的代号
# 远程分支名值得是远程的分支名称
git pull 远程代号 远程分支名

 

  • 示例:

 

团队外协作

  • 略。

 

第五章 在IDEA中操作Git

  • 略。

 

第六章 Git工作流

Git开发流程

  • 集中式工作流。
  • GitFlow工作流。

集中式工作流

  • 像SVN一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有修改都提交到Master这个分支上。
  • 这种方式与SVN的主要区别就是开发人员有本地库。Git很多特性并没有用到。

GitFlow工作流

  • GitFlow工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

 

  • 示例:

 

 

  • 示例:

分支的种类

  • 主干分支 master:主要负责管理正在运行的生产环境代码。永远保持和正在运行的生产环境完全一致。
  • 开发分支 dev:主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
  • 热修复分支 hot fix:主要负责管理生产环境下出现的紧急修复的代码。从主干分支分出,修理完毕并测试上线后,合并到主干分支。合并完之后,视情况可以删除该分支。
  • 发布版本分支 release:较大版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段稳定后可以视情况删除。
  • 功能分支 feature:为了不污染开发分支,会从开发分支独立出功能分支。开发完成后会合并到开发分支。

 

posted @ 2019-08-23 23:48  许大仙  阅读(307)  评论(0编辑  收藏  举报