第七章 分支结构

在实际的项目开发中,尽量保证master分支稳定,仅用于发布新版本,平时不要随便直接修改里面的数据文件。

那在哪干活呢?干活都在dev分支上。每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后dev分支合并到master分支。所以团队的合作分支看起来会像下图那样。

分支切换

[root@gitlab git_data]# git branch linux
    [root@gitlab git_data]# git branch 
      linux
    * master
    [root@gitlab git_data]# git checkout linux 
    切换到分支 'linux'
    [root@gitlab git_data]# git branch 
    * linux
      master
在linux分支进行修改

    [root@gitlab git_data]# cat README 
    [root@gitlab git_data]# echo "2017年11月30日" >> README 
    [root@gitlab git_data]# git add .
    [root@gitlab git_data]# git commit -m "2017年11月30日09点10分"
    [linux 5a6c037] 2017年11月30日09点10分
     1 file changed, 1 insertion(+)
    [root@gitlab git_data]# git status 
    # 位于分支 linux
    无文件要提交,干净的工作区
回到master分支

    [root@gitlab git_data]# git checkout master 
    切换到分支 'master'
    [root@gitlab git_data]# cat README 
    [root@gitlab git_data]# git log  -1
    commit 7015bc7b316cc95e2dfe6c53e06e3900b2edf427
    Author: clsn <admin@znix.top>
    Date:   Wed Nov 29 19:30:57 2017 +0800

        123
合并代码

    [root@gitlab git_data]# git merge linux 
    更新 7015bc7..5a6c037
    Fast-forward
     README | 1 +
     1 file changed, 1 insertion(+)
    [root@gitlab git_data]# git status 
    # 位于分支 master
    无文件要提交,干净的工作区
    [root@gitlab git_data]# cat README 
    2017年11月30日

合并失败解决

模拟冲突,在文件的同一行做不同修改

在master 分支进行修改

[root@gitlab git_data]# cat README 
2017年11月30日
[root@gitlab git_data]# echo  "clsn in master">> README 
[root@gitlab git_data]# git commit -a -m "clsn 2017年11月30日 09点20分 "
[master 7ab71d4] clsn 2017年11月30日 09点20分
 1 file changed, 1 insertion(+)
切换到linux分支

[root@gitlab git_data]# git checkout linux 
切换到分支 'linux'
[root@gitlab git_data]# cat README 
2017年11月30日
[root@gitlab git_data]# echo "clsn in linux" >> README 
[root@gitlab git_data]# git commit -a -m "2017年11月30日 03"
[linux 20f1a13] 2017年11月30日 03
 1 file changed, 1 insertion(+)
回到master分区,进行合并,出现冲突

[root@gitlab git_data]# git checkout master 
切换到分支 'master'
[root@gitlab git_data]# git merge linux
自动合并 README
冲突(内容):合并冲突于 README
自动合并失败,修正冲突然后提交修正的结果。
解决冲突

[root@gitlab git_data]# vim README 
2017年11月30日
clsn in master
clsn in linux
# 手工解决冲突

[root@gitlab git_data]# git commit -a -m "2017年11月30日 03"
[master b6a097f] 2017年11月30日 03

删除分支

因为之前已经合并了linux分支,所以现在看到它在列表中。 在这个列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。

查看所有包含未合并工作的分支,可以运行 git branch --no-merged:

git branch --no-merged
  testing
这里显示了其他分支。 因为它包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败:

git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'. 
如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它。
posted @ 2018-03-22 20:22  云原生运维社区  阅读(139)  评论(0编辑  收藏  举报