分支
Branch | 分支
Git 中的分支实际上只是 Commit 指针。
# 命令行中查看版本树
$ git log --pretty=oneline --graph --decorate --all
# 内置的可视化界面查看版本树
$ gitk --all
# 根据提交人过滤 Commit 信息
$ git log --author="username" --pretty=format:"%h - %an, %ar : %s"
Manipulation | 操作
# 创建某个分支
git branch BRANCH_NAME
# 创建并且切换到某个分支
git checkout -b BRANCH_NAME
Head
分支是
Merge | 分支合并
–force 会使用本地分支的提交覆盖远端推送分支的提交。也就是说,如果其他人在相同的分支推送了新的提交,你的这一举动将“删除”他的那些提交!就算在强制推送之前先 fetch 并且 merge 或 rebase 了也是不安全的,因为这些操作到推送之间依然存在时间差,别人的提交可能发生在这个时间差之内。使用此参数推送,如果远端有其他人推送了新的提交,那么推送将被拒绝,这种拒绝和没有加 –force 参数时的拒绝是一样的。
cherry-pick
git cherry-pick 可以选择某一个分支中的一个或几个 commit(s) 来进行操作,譬如我们存在多个稳定开发版本,在不能完全合并分支的情况下又想把某些功能合入到某个分支,那就可以利用 cherry-pick 对已经存在的 commit 进行再次提交。注意,当执行完 cherry-pick 以后,将会生成一个新的提交;这个新的提交的哈希值和原来的不同,但标识名一样。
# 选择某个其他分支的 commit 合并到当前分支
$ git cherry-pick <commit id>
# 如果出现冲突,则类似于 Rebase 进行解决
# 手动查看冲突文件
$ git status
# 设置文件已经解决冲突
$ git add ...
# 设置 cherry-pick 继续执行
$ git cherry-pick --continue
$ git cherry-pick --quit
$ git cherry-pick --abort