很經(jīng)常遇到涉及到多人協(xié)作,在公共分支開發(fā)的一些需求翘县,但總會看到 merge(這個還好理解??一點點)谴分,回退,強(qiáng)推(黑人問號.jpg)等比較詭異的 git 操作忘伞。
所以給大家分享一下我的做法沙兰,比較干凈,保證后人使用絲滑舀奶,對追求 git 節(jié)點順暢的人比較友好斋射,可以放心食用罗岖。
- 每次代碼提交后到再次進(jìn)行改動前,記得記得記得先
git pull
- 本地代碼發(fā)生改動進(jìn)行提交南蓬,??老三部曲:
git add .
git commit -m 'feat: xxx'
git push
- 以上如果沒有沖突捡多,那,那我這篇文章就白寫了???
- 還是有沖突吧蒜焊,我就說有科贬。精華來了:
-
git log
拿到當(dāng)前你的剛提交的 commit id -
git reset --hard HEAD^
(hard 表示強(qiáng)制回退,HEAD后面加^或者~表示回退一個版本优妙,即一個 commit 套硼,也即回到本地未改動前的那個 commit) -
git pull
拉取線上最新代碼(如果線上公共分支沒有發(fā)生回退之類的會引起節(jié)點變化的改動卡辰,這將是成功的 pull,否則 pull 可能會有沖突)- 如果有沖突邪意,執(zhí)行
git reset --hard <commit id>
或git reset —hard HEAD~<n>
( n 代表任意數(shù)字九妈,也可以用 HEAD^^^^^,幾個 ^ 就表示回退幾步)雾鬼,這里自己把握萌朱,只要確定這個commit之后不會沖突就行 - 再執(zhí)行
git pull
- 如果還沖突,再回到以上1步驟策菜,直到不沖突為止
- 如果有沖突邪意,執(zhí)行
-
git cherry-pick <commit id>
(如果 commit id 丟了可以用git reflog
晶疼,然后根據(jù) commit message 找到丟失的 id hash)- 如果有沖突,修改又憨,然后再執(zhí)行提交三部曲:
git add .
git commit -m 'feat: xxx'
git push
- 如果沒有沖突翠霍,直接執(zhí)行
git push
- 如果有沖突,修改又憨,然后再執(zhí)行提交三部曲:
-