我如何处理合并冲突 - Git

时间:2015-09-12 16:45:34

标签: git version-control merge

考虑以下情况

有两个文件

FileA
FileB

我对FileB进行了更改。在远程存储库中,有人对FileA和FileB进行了更改。我从上游拉入,FileA中存在合并冲突。

我修复了合并冲突,现在当我检查git status时,我看到FileA已暂存,FileB已修改。

on branch master Your branch is ahead of origin/master by 1 commit. You have unmerged paths. (fix conflicts and run "git commit"). Changes to be committed: modified: FileA Unmerged paths: both modified FileB

在这里,您可以看到FileA在合并失败时处于暂存状态。但我没有修改它。现在,当我解析冲突文件FileB并提交时,FileA将在那里进行提交,但FileA实际上没有被我触及。

当合并失败的提交历史记录中出现数百个文件时,它变得如此困难,虽然它实际上并没有被我修改过。

我如何在Git中处理这种情况。

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

解决合并冲突时,git会为您提供手动解决冲突的信息。在您的情况下,git会通知您远程主服务器还包含FileA中的更改,如果远程FileB中的更改取决于FileA中的更改,这可能会有所帮助,这可能是您需要的更改在FileB手动解决冲突时要考虑到这一点。

解决冲突后,您需要暂停FileAFileB。如果FileA在没有任何更改的情况下暂存,则它将不会成为合并提交的一部分(合并提交将不会包含在FileA的提交历史记录中)

注意:如果您对文件应用了LF / CRLF转换,则在暂存时可能会包含空格更改,因此它们将包含在合并提交中。

您可以通过将更改重新定位到分支机构来更新本地存储库,但您可能仍需要跟踪此更新引入的任何相关更改。

答案 1 :(得分:0)

Git不会单独管理文件,但是包含文件的分支,意味着您不会对文件进行更改,实际上每次都会推送本地分支状态。

在您的情况下,如果您的提交中未包含if ( RoleEnvironment.IsEmulator || RoleEnvironment.IsAvailable) { // Role is available } ,那么推送您的分支将覆盖您在本地分支上的FileA上的FileA以及{{{}上的更改1}}会丢失。

您可以在Git here上阅读有关分支的更多信息。