第二十五天
Git的使用(三)分支管理
1、master分支
从项目创建之初,有且唯一的分支就是主分支,之后如果创建分支,就是一个一个的从分支,主分支被叫做master。我们可以将分支之间看作两个平行的宇宙,平时之间互不干扰。
通过命令git branch查看当前工作在哪个分支。
Git主分支master.png
$ git branch
* master
#默认就是只有一个主分支master
每次提交,master分支都会向前移动一步,这样,随着不断地提交,master分支的线也越来越长。
2、分支操作
Git中对分支操作的流程大体如下:
2.1、创建分支dev,并将指针指向dev
Git创建新分支.png$ git checkout -b dev
Switched to a new branch 'dev'
$ git branch
* dev
master
#当前存在两个分支
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev #创建分支
$ git checkout dev #切换分支
2.2、从分支操作
创建dev分支后,HEAD指向dev,就表示当前分支在dev上。对工作区的修改和提交就是针对dev分支了,与主分支就没有关系了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
Git新建分支的提交.png
分支创建切换后,我们对readme.txt修改,此时我们可以通过git branch查看当前所在分支。
$ git branch
* dev #当前所在分支是dev分支
master
对readme.txt修改后进行添加到暂存库并提交。
$ vi readme.txt
d/python_db (dev)
$ git add readme.txt
d/python_db (dev)
$ git commit -m '这是dev分支首次提交'
[dev 2bef9f9] 这是dev分支首次提交
1 file changed, 1 insertion(+)
我们看到现在是dev分支的首次提交(参考上图)。
2.3、分支合并
当在dev上的工作完成了,就可以把dev合并到主分支master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
Git分支合并.png
分支合并第一步就需要先切换为主分支
$ git checkout master
Switched to branch 'master'
# 提示切换为master分支
分支切换后,我们可以在主分支查看git操作日志。
$ git log
# 这时候看不到我们刚在dev分支下的提交日志的,同时你可以打开readme.txt文件却看不到我们刚加入的数据,说明分支间的互不干扰。
分支切换后,我们就可以合并分支了。
$ git merge dev
Updating 495a251..2bef9f9
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
我们可以通过git log命令以及查看readme.txt文件验证是否合并成功。
2.4、从分支删除
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
Git删除从分支.png
$ git branch -d dev
Deleted branch dev (was 2bef9f9).
# 提示删除dev分支
再次通过git branch查看分支,只有主分支master了。
$ git branch
* master
3、冲突解决
我们在合并分支的时候,并不是一帆风顺的,有时候是会出现冲突的。如下:
(1)创建一个新分支dev
$ git checkout -b dev
Switched to a new branch 'dev'
(2)修改readme.txt,并提交
$ vi readme.txt #修改文件
$ git add readme.txt #添加缓存区
$ git commit -m '再次创建dev分支 提交2'
[dev 6e64770] 再次创建dev分支 提交2
1 file changed, 1 insertion(+)
(3)切换回master分支,修改同样的文件,并提交
$ git checkout master #切换主分支
$ vi readme.txt #再次修改文件
$ git add readme.txt #再次添加缓存区
$ git commit -m 'master分支新天一行数据提交'
[master 3700eed] master分支新天一行数据提交
1 file changed, 2 insertions(+)
(4)分支合并
$ git merge dev
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
# 出错
# 合并失败,修正冲突后提交修正后的结果
(5)冲突修正
通过命令git status找到冲突的文件
$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
打开冲突的readme.txt文件,你会发现文件变成如下:
Hello Git! ---first
Hello Git! ---second
Hello Git! ---third
Hello Git! ---fouth
Hello Git! ---fifth
Hello this is dev branch!
<<<<<<< HEAD
Hello master分支提交!
=======
Hello this is dev second 测试!
>>>>>>> dev
需要自己手动修正错误。
修正后,需要重新添加缓存区以及提交。
$ git add readme.txt #修正后添加缓存区
$ git commit -m '冲突修正后数据提交'
网友评论