Python学习

2021-04-18  本文已影响0人  逛逛_堆栈

第二十五天

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 '冲突修正后数据提交'

上一篇下一篇

猜你喜欢

热点阅读