很经常遇到涉及到多人协作,在公共分支开发的一些需求,但总会看到 merge(这个还好理解🤏一点点),回退,强推(黑人问号.jpg)等比较诡异的 git 操作。
所以给大家分享一下我的做法,比较干净,保证后人使用丝滑,对追求 git 节点顺畅的人比较友好,可以放心食用。
- 每次代码提交后到再次进行改动前,记得记得记得先
git pull - 本地代码发生改动进行提交,🚶老三部曲:
git add . git commit -m 'feat: xxx' git push - 以上如果没有冲突,那,那我这篇文章就白写了🙄?
- 还是有冲突吧,我就说有。精华来了:
git log 拿到当前你的刚提交的 commit idgit reset --hard HEAD^ (hard 表示强制回退,HEAD后面加^或者~表示回退一个版本,即一个 commit ,也即回到本地未改动前的那个 commit)git pull 拉取线上最新代码(如果线上公共分支没有发生回退之类的会引起节点变化的改动,这将是成功的 pull,否则 pull 可能会有冲突)
- 如果有冲突,执行
git reset --hard <commit id> 或 git reset —hard HEAD~<n> ( n 代表任意数字,也可以用 HEAD^^^^,几个就表示回退几步),这里自己把握,只要确定这个commit之后不会冲突就行 - 再执行
git pull - 如果还冲突,再回到 i 步骤,直到不冲突为止
git cherry-pick <commit id> (如果 commit id 丢了可以用git reflog ,然后根据 commit message 找到丢失的 id hash)
- 如果有冲突,修改,然后再执行提交三部曲:
git add . git commit -m 'feat: xxx' git push - 如果没有冲突,直接执行
git push
希望对你能有些帮助(没帮助关我pi事啊😳)
|