Linux下Git的快速入门(五)分支管理

在实际项目开发中,我们需要开发一个新功能,但又不能马上完成,如果立刻提交,由于代码还没写完或者还没经过测试,直接提交上去可能会影响主线的正常运行。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

一、创建与合并分支

首先,我们查看一下已存在的分支,列出分支命令:git branch,不带参数时,git branch 会列出所有的分支。

# git branch
* master

此例的意思就是,我们有一个叫做"master"的分支,并且该分支是当前分支。

接着,创建一个dev分支,然后切换到dev分支:

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

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

# git branch dev
# git checkout dev
Switched to a new branch 'dev'

再用 git branch 查看当前分支:

# git branch
* dev
master

git branch命令列出了所有分支,前面有*号的表示是当前分支。

然后,我们就可以在dev分支上操作,比如对README.md做个修改,加上一行:

creating a new branch in git is so quick.

提交:

# git add README.md
# git commit -m "create branch test"

此时,dev分支的工作完成,我们就可切换回 master 分支:

# git checkout master

切回到master分支后,再查看一下README.md文件,并没有看到刚才添加的内容。因为那个提交是在dev分支上,而master分支此刻的提交点并没有变。

现在,假设我们已经完成了新功能的开发,需要把dev分支的工作成果合并到master分支上:

# git merge dev

git merge命令用于合并指定分支到当前分支。合并后,再查看README.md文件,就可以看到,和dev分支的最新提交是完全一样的。

合并完成后,就可以放心地删除dev分支:

# git branch -d dev

删除后,查看branch,就只剩下master分支:

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

小结

  • 查看分支:git branch
  • 创建分支:git branch <name>
  • 切换分支:git checkout <name>
  • 创建+切换分支:git checkout -b <name>
  • 合并某分支到当前分支:git merge <name>
  • 删除分支:git branch -d <name>

二、解决冲突

新创建一个giant分支,切换过去,并对README.md做一些修改操作:

# git branch -d giant

README.md文件里添加一句:

create a new branch of giant.

giant分支上提交:

# git add README.md
# git commit -m "giant branch"

现在,切换回master分支:

# git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Git提示我们当前master分支比远程的master分支要超前1个提交。

master分支上把README.md文件的最后一行改为:

creating a new branch of giant.

保存退出,提交:

# git add README.md
# git commit -m "creating giant branch"

现在,我们在master分支和giant分支上都做了修改提交,接下来我们将giant分支合并看看:

# git merge giant
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

Git告诉我们,README.md文件存在冲突,必须手动解决冲突后再提交,接下来我们需要手动去修改它。

打开README.md文件看看:

Git用<<<<<<< xxx ======= xxx >>>>>>>标记存在冲突的不同分支的内容。如是在多人协作开发遇到冲突,需要一起协商确定需要保留哪部分内容,这里假设保留上面那句,就需要把下面那句和标记符删除:

冲突已经解决,重新提交:

# git add README.md
# git commit -m "conflict fixed"

现在我们成功解决了合并中的冲突,并提交了结果。

小结

当Git无法自动合并分支时,就必须首先解决冲突。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,解决冲突后,再重新提交,合并就完成了。

2 人推荐

声明:本文原创发布于加藤非博客,转载请注明出处:加藤非博客 jiatengfei.com 。如有侵权,请联系本站删除。

加藤非博客
请先登录再发表评论
  • 最新评论

  • 总共0条评论