练习地址:https://learngitbranching.js.org/?locale=zh_CN
核心
基础篇章
git commit
- git checkout <分支名> 分支切换
git branch
- git branch 创建分支
- git checkout -b <新分支名> 创建分支并切换当前分支
git merge
-
// 新建一个bugFix分支,然后提交数据,然后切换到main分支,提交数据, 最后吧bugFix的代码合并到main。使main成为代码是最新 git checkout -b bugFix (git branch bugFix;git checkout bugFix) git commit git checkout main git commit git merge bugFix
git rebase
-
// 新建一个bugFix分支,然后提交数据,然后切换到mian分支,提交数据,然后切换到bugFix分支,使用用rebase拉到main分支新的提交 git checkout -b bugFix git commit git checkuot main git commit git chekcout bugFix git rebase main
高级篇
分离 HEAD
- HEAD 可以指向分支名,也可以指向commit哈希值
相对引用
-
操作符()、main^、HEAD
// 切换到bugFix分支的上一个提交记录 git checkout bugFix^
-
操作符(~)
// 切换到bugFIx分支的向上3步的提交记录 git checkout bugFix~3
强制移动分支
// 把HEAD 上移一步,把bugFix 强制移动到c0,把main强制移动到c6
git checkout HEAD^
git branch -f bugFix c0
git branch -f main c6
撤销变更
-
git reset :撤销本地提交
-
git revert:撤销远程提交
分别撤销 local 分支和 pushed 分支上的最近一次提交 local 本地分支,pushed 远程分支 git reset local git checkout pushed git revert pushed
整理提交记录
Git cherry-pick
// Git cherry-pick <提交号1> <提交号2>
// 当前分支main,整理bugFix分支的c3、side分支的c4、another分支的c7(知道hash值了)
git cherry-pick c3 c4 c7
交互式的rebase
// 交互式 rebase 指的是使用带参数 --interactive 的 rebase 命令, 简写为 -i
git rebase -i HEAD~n
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)
以上操作完成后.需要强制提交-f。 也就是force
git push -f
杂项
本地栈式提交
确保
main
分支能得到bugFix
分支上