Git 相对于其他的版本控制软件的“大杀器”是分支,因为 Git 进行分支速度很 快且很方便。使用 Git 做版本控制是非常鼓励多使用分支的。与分支相关的三 个重要的命令分别是:branch,checkout 和 merge。branch 用来创建分支, checkout 用来切换不同的分支,merge 用于合并分支。
基本的分支操作有:
- 创建分支:
git branch
来创建新分支。 - 切换分支:
git checkout
来切换到新的分支。 - 在新分支提交修改:
git add
和git commit
来提交记录对代码的改变。 - 切换到原分支:
git merge
来合并分支。这种情况只会简单地去移动分支 指针,如果有第三个分支需要合并,则需要去对比分支的不同(可能会用到git diff
)。
创建分支
使用 git branch <branchname>
就可以创建一个新的分支,例如创建一个叫
做 dev 的分支:
git branch dev
创建一个分支,可以简单理解为创建了一个指针,该指针指向了一个 commit, 而 commit 中有其 parent commit 的 SHA-1 值,从而形成了一个分支链条。创 建一个分支并不会切换到新分支,而是依然保留在原来的分支。新创建一个分支, 没有做任何修改的时候,相当于新的分支和当前分支同时指向同一个 commit。
切换分支
如果要切换到新的分支来进行下一步开发,则需要使用 git checkout
命令,如:
git checkout dev
# Switched to branch 'dev'
也可以使用 git checkout -b <branch>
来直接创建并切换分支。
合并分支
当我们在新的分支上对于代码做了修改,并进行了新的 commit,这样新的分支
就和原来的 master 分支有所不同了。在调试完毕,确认要把新的代码加入到
master 分支中,可以使用 git merge
命令来合并分支。
要合并代码,首先切换到被合并的分支上,如我们要把分支合并到 master,则 要先切换到master分支:
git checkout master
# M md/git_command_commit.md
# Switched to branch 'master'
然后执行 merge 命令:
git merge dev
如果只有两个分支,并且在切换到一个分支后并未对原分支进行新的 commit , 那么 merge 将会非常容易,因为是线性的。而如果切换分支后,原分支又又了 新的分支或者新的 commit,那么就会在 merge 的时候遇到冲突。这时候应该先 解决冲突才能进一步合并分支。