git怎么解决上传代码冲突问题
Boss直聘上被推送了这个问题,问题分类是“web前端面试相关回答”,应该是面试时问到的题。
这个问题的场景应该是多人同时修改相同的文件行,然后本地commit完提交代码之后提示代码冲突了。
比较不好的做法是,
git push --force origin
这样可以忽视冲突提示,强制用本地commit覆盖服务器代码, 但这种做法肯定是不推荐的。
强制覆盖会把同事提交的代码覆盖,同事的代码被你给抹掉,问题很严重!所以要尽量避免–force选项。
正确的做法
我们要始终坚持一个目标,就是服务器的代码不能被我们的误操作产生错误。所有的代码都是正确可查的。这就要求我们养成好的习惯,即使出现冲突也要在我们本地冲突,不能污染到服务器仓库。
正确的方式应该如下操作:
git stash #先把本地修改都存到栈中
git pull --rebase #保持本地代码跟远程仓库同步
git stash pop #把栈中的修改出栈,这时可能会产生冲突
# 手动解决产生的冲突
git add <产生冲突的文件们>
git commit -m "msg"
git push
养成这样的习惯,就能保证产生的冲突只会在我们本地,可以本地处理了冲突再提交。
再回到原问题,提示冲突说明已经做完了commit,我们只需要把commit的代码reset,再按照正确的方式处理就行了。
git reset --soft HEAD^ #还原最新的commit到未提交状态
问题搞定。