https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html cherry-pick合并分支的部分commit
git 查看版本樹
git log --oneline --graph --decorate --all

git reset revert 區(qū)別
https://www.css3.io/hui-gun.html
- git reset –-soft:回退到某個版本. 將這中間回退的commit都并入暫存區(qū), 暫存區(qū)內(nèi)本來有的改動不會丟, 不會動文件區(qū).
- git reset -–hard:徹底回退到某個版本,本地文件區(qū)變?yōu)樵摪姹? 丟棄撤銷的commit和暫存區(qū)中所包含的更改;
reset時只應(yīng)修改本地的提交鏈, 不應(yīng)影響公共提交鏈. (否則一方面造成與遠(yuǎn)端的提交樹沖突, 另一方面可能會沖掉別人的工作成果)
git revert 用法
git revert只能抵消上一個提交, 相當(dāng)于做出了一個新提交, 該提交的改動是上一個提交的反操作.
另外可參考:
當(dāng)撤回到合并分支之前時, 需要決定退到分之前的哪一條路, 建議執(zhí)行git help revert并查看-m參數(shù). 一般不會有人撤回合并操作.
git rebase
- git rebase 拆分commit
- git rebase 撤銷合并
-
http://jartto.wang/2018/12/11/git-rebase/講了合并多個commit與合并遠(yuǎn)程分支
git merge/rebase使用總結(jié):
在master分支執(zhí)行git merge b2或在子分支上執(zhí)行git rebase master
或者在git pull以后執(zhí)行git rebase master都可.
rebase合并遠(yuǎn)端分支
- https://zhuanlan.zhihu.com/p/34197548 講了如何合并遠(yuǎn)程分支
- https://backlog.com/git-tutorial/cn/stepup/stepup2_8.html git rebase master
當(dāng)你在master進(jìn)行一次commit后, git push發(fā)現(xiàn)遠(yuǎn)端有了別人的commit, 你可以做如下之一:
-
git pull origin xxx --rebase用來更新遠(yuǎn)端代碼 git rebase master
撤銷已push的merge, 并rebase
假如當(dāng)下有這樣的分支情況:

由圖可見,該merge已經(jīng)推送到origin. 現(xiàn)在我們希望將merge撤銷, 將并兩個分支合并成一個分支.

然后遵循https://backlog.com/git-tutorial/cn/stepup/stepup2_8.html中的教程,可見
執(zhí)行git rebase --continue后

這時候
git checkout master后, 再執(zhí)行如下:
最后進(jìn)行清理:
git branch -D b2
git push origin master -f

刪除refs/stash
https://stackoverflow.com/questions/5737002/how-to-delete-a-stash-created-with-git-stash-create
git stash list列出所有stash分支,
然后git stash drop stash{no}刪除指定的stash分支, 其中no是分支編號

