廖雪峰老师Git教程知识整理(3.1)-分支管理

Git的分支在实际应用中有什么作用呢?分支就像一个平行的宇宙,同时工作互不影响,在某个时间点再进行合并,两者的效果同时拥有。在实际工作中我们在一个分支上工作,如果代码完成不了提交会影响别人的工作,但是如果不提交还会面临着代码丢失的危险。所以我们可以创建一个自己的分支,在自己的分支上进行编码,提交。在完成后再将分支合并。这样既不影响工作也大大提高了安全。

1.创建合并分支

Git会把每次提交串成一个时间线,时间线就是一个分支。而Git会为我们自动创建master 分支。所以说分支是指向提交的,而HEAD 是指向当前分支的
这里写图片描述
最开始master 是指向最新提交的,而HEAD 又是指向master 这样就可以确定最新提交以及当前分支
每次提交master 分支都会向前推移一个节点,分支就会越来越长
首先说一下如何创建分支

$ git checkout -b dev
Switched to a new branch 'dev'

创建并且换到dev 分支上
相当于

git branch dev
git checkout dev

使用git branch 命令查看分支

* dev
  master

可见展示了所有分支 并在当前分支前面打上了*
接下来我们修改a.txt 并进行提交

diff --git a/a.txt b/a.txt
index 14b6e9f..159b2d1 100644
--- a/a.txt
+++ b/a.txt
@@ -3,4 +3,5 @@ Git is Good
 I am am new line
 Manage Edit

-Manage Edit2
\ No newline at end of file
+Manage Edit2
+study master
\ No newline at end of file
git add a.txt
git commit -m "sixcommit"

切回master 分支
git checkout master
发现我们刚才新添加的内容没有了,因为我们是在dev 分支上进行提交 而master 分支并没有此时的提交点
这里写图片描述
我们合并分支git merge dev 此命令是将分支合并到当前分支

$ git merge dev
Updating 35bf98d..3a07802
Fast-forward
 a.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
再次查看文件
这里写图片描述
接下来删除分支git branch -d dev

* master

只剩下master 分支了

2.解决冲突

在平时的工作中master 分支是非常稳定的只能用来发布新版本不能在上面干活。
现在模拟一下这种情况
我们创建分支并在上面提交a.txt 我们切回master 分支并在a.txt 文件相同位置坐了不同修改并且提交.那么当我们合并分支的时候就有极大的可能出现冲突
这里写图片描述
此时我们查看一下冲突文件

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

我们手动删掉冲突部分并且重新提交。合并后结果
这里写图片描述
我们可以使用git log --graph 查看分支合并图

$ git log --graph --pretty=oneline --abbrev-commit
*   59bc1cb conflict fixed
|\
| * 75a857c AND simple
* | 400b400 & simple
|/
* fec145a branch test
...

3.分支管理策略

Git在合并分支的时候如果可以会使用Fast Forward 模式,但是这种情况下删除分支会丢掉分支信息
我们可以使用--no-ff 参数来禁用Fast Forward 模式 这样在合并的时候就会生成一个新的commit 但是我们可以从分支历史记录查看到分支信息

$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
 readme.txt |    1 +
 1 file changed, 1 insertion(+)

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
不使用Forward 合并之后
这里写图片描述
团队合作的分支看起来就像这样
这里写图片描述
Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值