目录
分支
git branch test #创建一个test分支
git checkout test #切换到test分支
你可以简单地使用 git log 命令查看分叉历史。运行 git log --oneline --decorate --graph --all ,会输出你的提交历史、各个分支的指向以 及项目的分支分叉情况。
创建并切换到该分支
想要新建一个分支并同时切换到那 个分支上,你可以运行一个带有 -b 参数的 git checkout 命令:
如果你正在test分支做某特定功能,此时,突然让你解决一个问题,这时,你可以将现有的更改都提交或者保存进度(stashing)和 修补提交(commit amending)。你将按照如下方式来处理:
1. 切换到你的线上分支(production branch)。git checkout [production-branch]
2. 为这个紧急任务新建一个分支,并在其中修复它。git checkout -b [分支名]
3. 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。git merge [分支名]
4. 切换回你最初工作的分支上,继续工作。
遇到冲突时的分支合并
有时候合并操作不会如此顺利。如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修 改,Git 就没法干净的合并它们。例如在test分支和is0分支都对ac文件的同一个地方做了更改,在合并它们的时候就会产生合并冲突:
此时 Git 做了合并,但是没有自动地创建一个新的合并提交。Git 会暂停下来,等待你去解决合并产生的 冲突。你可以在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并 (unmerged)状态的文件
如果你想使用图形化工具来解决冲突,你可以运行 git mergetool ,该命令会为你启动一个合适的可 视化合并工具,并带领你一步一步解决这些冲突.
分支管理
git branch 命令不只是可以创建与删除分支。如果不加任何参数运行它,会得到当前所有分支的一个 列表:
master 分支前的 * 字符:表示当前所在的分支分支(也就是说,当前 HEAD 指针所指向的分支)。这意味着如果在这时候提交, master 分支将会随着新的工作向前移动。如果需要查看每一 个分支的最后一次提交,可以运行 git branch -v 命令:
--merged 与 --no-merged 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支 的分支。如果要查看哪些分支已经合并到当前分支,可以运行 git branch --merged :
因为之前已经合并了 is0 分支,所以现在它在列表中的分支名前没有 * 号,使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去 任何东西。
运行 git branch --no-merged 查看所有包含未合并工作的分支,因为它包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失 败,如下所示:
如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它
分支开发工作流
长期分支
在整个项目开发周期的不同阶段,可以同时拥有多个开放的分支;定期 地把某些特性分支合并入其他分支中。
许多使用 Git 的开发者都