git提交前先fetch一下,然后merge的时候提示有冲突,然后把自己的一个冲突的文件提交到本地仓库,再merge提示那个文件冲突,然后手动解决冲突后提交了那个文件,结果之前别人提前的代码被还原了,请问大家是什么原因出现这种情况?是解决冲突后提交只提交了自己的那个文件会导致其他之前别人提交的文件被还原吗?
git提交前先fetch一下,然后merge的时候提示有冲突,然后把自己的一个冲突的文件提交到本地仓库,再merge提示那个文件冲突,然后手动解决冲突后提交了那个文件,结果之前别人提前的代码被还原了,请问大家是什么原因出现这种情况?是解决冲突后提交只提交了自己的那个文件会导致其他之前别人提交的文件被还原吗?
一般是自己拉出开发分支去开发,本地开发完成之后fetch主线分支(master/dev分支),自己的分支 rebase 主线最新的提交。这样会把主线的提交更新到自己本地开发分支上面,此时如果有冲突就会提醒你解决。这时候冲突解决会在你自己提交上面操作,只会修改你的提交代码,就不会影响到你同事的提交内容了。
解决完全部冲突之后,切回到主线分支合并你的本地开发分支。这时候因为冲突已经全部解决了,所以用 merge
还是 rebase
效果都是一样的。合并完成之后把主线push到远端。可能有一些团队需要提交 PR/MR
的形式来合并,那就按照团队流程操作就行了。
你现在的情况应该是 merge
的过程中解决冲突的时候不小心把同事的代码覆盖掉了或者舍弃掉了?reset 回到你操作之前的 Commit hash
上面,重新按照上面提到的方式操作一次就好了。
5 回答2.9k 阅读
3 回答2.7k 阅读
3 回答1k 阅读
2 回答279 阅读✓ 已解决
440 阅读
在Git中,当你在合并(merge)过程中解决冲突并提交后,如果发现别人的提交被还原,这通常是因为你在解决冲突时未能正确地保留和合并所有的更改。这种情况可能发生在以下几个步骤:
Fetch 最新代码:你从远程仓库中获取了最新的更改。
Merge 导致冲突:你尝试合并远程分支到你的本地分支时,出现了冲突。
处理冲突:你解决了冲突并提交了冲突文件。
当你在解决冲突时,如果只提交了解决冲突的文件,而忽略了其他文件的更改,那么在合并完成后,Git可能会将这些文件还原到冲突解决前的状态。具体来说,当你解决冲突并执行提交时,Git会认为你当前的提交就是最终版本。如果你没有正确合并其他文件的改动,这些改动就会丢失。
正确处理冲突的步骤应该是:
Fetch 和 Merge:
解决所有冲突:
添加所有解决了冲突的文件:
提交解决冲突后的状态:
通过这种方式,你确保了所有的更改都被正确保留并合并,而不会丢失其他人的改动。
总结来说,问题可能出现在你在解决冲突后只提交了某个特定文件,而没有处理或检查其他文件的更改。确保在解决冲突后,所有文件的更改都被正确地检查、解决和提交。