赞
踩
闯关地址:https://oschina.gitee.io/learn-git-branching/?NODEMO
第一关 : 提交
git commit
# 1、提交
git commit
# 2、提交
git commit
第二关: 新建分支
git branch
例子:新建分支
git branch bugFix
例子:切换到新的分支上——(git checkout -b )
git checkout
# 1、创建一个分支 bugFix 并且切换到此分支上
git checkout -b bugFix;
第三关: 分支合并
git merge
例子:把 bugFix 分支合并到 master 里
git merge bugFix
例子:把 master 分支合并到 bugFix 里
git checkout bugFix; git merge master
# 1
git checkout -b bugFix; git commit;
# 2
git checkout master; git commit;
# 3
git merge bugFix;
第四关:合并分支
git rebase
例子:把 bugFix 分支里的工作直接移到master分支上
git rebase master
例子:更新 master
git rebase bugFix
# 1
git checkout -b bugFix; git commit;
# 2
git checkout master; git commit;
# 3
git checkout bugFix;
# 4
git rebase master;
第五关: 在提交树上移动
例子:查看 Head 指向
git .git/HEAD
例子:若 HEAD 指向的是一个引用
git symbolic-ref HEAD
例子:
git checkout C1;git checkout master; git commit;git checkout C2
# 1、取出 HEAD 的内容
git checkout c4
第六关: 相对引用-1
例子:查看提交记录的哈希值
git log
例子:使用 ^
向上移动 一个提交记录
例子:使用 ~<num>
向上移动多个提交记录,如
git checkout master~3
# 1
git checkout bugFix^
第七关: 相对引用-2
例子:将 master 分支强制指向 HEAD 的第 3 级父
git branch -f master HEAD~3
# 1
git branch -f master c6
# 2
git checkout HEAD~1
# 3
git branch -f bugFix HEAD^
第八关: 撤销变更
git reset
andgit revert
例子:Git 把 master 分支移回到 HEAD的父
git reset HEAD~1
例子:新提交记录 C2'
引入了更改 —— 这些更改刚好是用来撤销 C2
这个提交的。也就是说 C2'
的状态与 C1
是相同的。
git revert HEAD
# 1
git reset HEAD^
# 2
git checkout pushed
# 3
git revert HEAD
第九关: 整理提交记录
git cherry-pick <提交号>
`
例子:提交记录 C2
和 C4
,所以 Git 就将被它们抓过来放到当前分支下了
git cherry-pick c2 c4
# 1
git cherry-pick c3 c4 c7
第十关: 交互式的 rebase
git rebase -i
pick
的状态来完成,关闭就意味着你不想要这个提交记录)# 1
git rebase -i HEAD~4
第十一关: 本地栈式提交
git rebase -i
git cherry-pick
# 1
git rebase -i master
# 2
git rebase bugFix mater
or
# 1
git checkout master
# 2
git cherry-pick c4
第十二关:提交的技巧-1
git rebase -i
将提交重新排序,然后把我们想要修改的提交记录挪到最前commit --amend
来进行一些小修改git rebase -i
来将他们调回原来的顺序# 1
git rebase -i HEAD~2
# 2
git commit --amend
# 3
git rebase -i HEAD~2
# 4
git branch -f master caption
# 4 or
git rebase caption master
第十三关:提交的技巧-2
git rebase -i
将提交重新排序,然后把我们想要修改的提交记录挪到最前commit --amend
来进行一些小修改git rebase -i
来将他们调回原来的顺序# 1 git checkout master # 2 git cherry-pick newImage # 3 git checkout c1 # 4 git cherry-pick master # 5 git branch -f master HEAD # 6 git checkout master # 7 git cherry-pick caption or # 1 git checkout master # 2 git cherry-pick newImage # 3 git commit --amend # 4 git cherry-pick caption
第十四关:Git Tags
v1
,并且明确地让它指向提交记录 C1
,如果你不指定提交记录,Git 会用 HEAD
所指向的位置。# 1
git tag v0 c1
# 2
git tag v1 c2
# 3
git checkout v1
or
# 3
git checkout c2
第十五关:Git Describe
git describe <ref>
# 1
git describe master
# 2
git describe side
# 3
git describe bugFix
# 4
git commit
第十六关:多分支 rebase
git bisect <ref>
# 1
git rebase master bugFix
# 2
git rebase HEAD side
# 3
git rebase side another
# 4
git rebase another master
第十六关:选择父提交节点
git checkout master^
git checkout HEAD~^2~2
# 1
git branch bugWork master^^2^
or
# 1
git branch bugWork HEAD^^2^
第十七关:纠缠不清的分支
git checkout master^
git checkout HEAD~^2~2
# 1
git checkout one
# 2
git cherry-pick c4 c3 c2
# 3
git checkout two
# 4
git cherry-pick c5 c4 c3 c2
# 5
git branch -f three c2
目前已完成的为:
"主要"中的:
“远程”中的:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。