Git - Git教程 1.2:创建与合并分支
原理
1 - Git 的每次提交,它都会把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在 Git 里这个分支叫主分支,即 master 分支
HEAD 严格来说不是指向提交,而是指向 master,master 才是指向提交的,所以 HEAD 指向的就是当前分支。一开始的时候,master 分支是一条线,Git 用 master 指向最新的提交,再用 HEAD 指向 master,就能确定当前分支,以及当前分支的提交点

2 - 每次提交时 master 分支都会向前移动一步,这样随着你不断提交,master 分支的线也越来越长。当我们创建新的分支,比如 dev,Git 就会新建一个指针叫 dev,它指向 master 相同的提交,再把 HEAD 指向 dev,就表示当前分支在 dev 上

3 - Git 创建一个分支很快,因为除了增加一个 dev 指针,改一改 HEAD 的指向,工作区的文件是没有任何变化的!不过从现在开始,对工作区的修改和提交就是针对 dev 分支了。比如新提交一次后,dev 指针往前移动一步,而 master 指针保持不变

4 - 假如我们在 dev 上的工作完成了,就可以把 dev 合并到 master 上。最简单的方法,就是直接把 master 指向 dev 的当前提交,就完成了合并。所以 Git 合并分支也很快!就改改指针,工作区内容也不变
5 - 合并完分支后,甚至可以删除 dev 分支。删除 dev 分支就是把 dev 指针给删掉,删掉后,我们就剩下了一条 master 分支

命令行
1 - 在桌面上新建一个 REMAKE 版本库,使用 git branch 命令查看当前分支
$ cd /Users/bs.ep/Desktop/REMAKE $ git init Initialized empty Git repository in /Users/bs.ep/Desktop/REMAKE/.git/ $ git branch
这是 git branch 是什么都不会显示的,因为你的版本库是全新的,还没有做任何提交操作
2 - 新增 FILE_T.txt 文件,并进行添加、提交,现在我们查看当前分支状况
1 $ git add FILE_T.txt 2 $ git commit -m "start branch" 3 [master (root-commit) 06d2044] start branch 4 1 file changed, 1 insertion(+) 5 create mode 100644 FILE_T.txt 6 $ git branch 7 * master
git branch 命令会列出所有分支,当前分支前面会标一个 * 号
3 - 创建 dev 分支,且切换到 dev 分支
1 $ git checkout -b dev 2 Switched to a new branch 'dev'
git checkout 命令加上 -b 参数表示创建并切换,相当于以下两条命令
1 $ git branch dev 2 $ git checkout dev 3 Switched to branch 'dev'
4 - 查看当前分支
1 $ git branch 2 * dev 3 master
5 - 之后就以在 dev 分支上正常提交,比如对 FILE_T.txt 做个修改,添加内容 Create a new branch 并进行提交
1 $ git add FILE_T.txt 2 $ git commit -m "new branch" 3 [dev f14f756] new branch 4 1 file changed, 2 insertions(+), 1 deletion(-)
6 - 现在 dev 分支工作完成,切回到 master 分支
1 $ git checkout master 2 Switched to branch 'master'
7 - 切换回 master 分支后查看 FILE_T.txt 文件,刚才添加的内容不见了!因为它是提交在 dev 分支上的,而 master 分支此刻的提交点并没有变

8 - 现在我们把 dev 分支的工作成果合并到 master 分支上
1 $ git merge dev 2 Updating 06d2044..f14f756 3 Fast-forward 4 FILE_T.txt | 3 ++- 5 1 file changed, 2 insertions(+), 1 deletion(-)
git merge 命令用于合并指定分支到当前分支。合并后再查看 FILE_T.txt 的内容,就可以看到和 dev 分支的最新提交是完全一样
9 - 合并完成后,就可以放心地删除 dev 分支
1 $ git branch -d dev 2 Deleted branch dev (was f14f756). 3 $ git branch 4 * master
注:因为创建、合并和删除分支非常快,所以 Git 鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在 master 分支上工作效果是一样的,但过程更安全
浙公网安备 33010602011771号