由于移动了文件,git合并冲突

由于移动了文件,git合并冲突,git,git-merge,merge-conflict-resolution,Git,Git Merge,Merge Conflict Resolution,到目前为止,我还没有对git做过太多的工作。现在,我有以下问题。 虽然我做了一些本地修改和提交,但我的同事在一个新分支中重新构建了文件和文件夹。然后,我添加了一个远程跟踪分支(反映了他的更改),并尝试将我的修改合并到其中。当然,当文件移动到另一个位置时,它会失败。我怎样才能继续前进? “git状态”向我显示: # On branch develop # You have unmerged paths. # (fix conflicts and run "git commit") # # Un

到目前为止,我还没有对git做过太多的工作。现在,我有以下问题。 虽然我做了一些本地修改和提交,但我的同事在一个新分支中重新构建了文件和文件夹。然后,我添加了一个远程跟踪分支(反映了他的更改),并尝试将我的修改合并到其中。当然,当文件移动到另一个位置时,它会失败。我怎样才能继续前进? “git状态”向我显示:

# On branch develop
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   deleted by us:      src/de/mpicbg/tds/knime/hcstools/prefs/DoubleFieldEditor.java
#   deleted by us:      src/de/mpicbg/tds/knime/hcstools/prefs/HCSToolsPreferencePage.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/HeatMapModel.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/PlateViewer.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/color/LinearGradientTools.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/dialog/PlateAttributeDialog.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/menu/TrellisMenu.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/menu/ViewMenu.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/menu/WellAttributeComboBox.java
#   deleted by us:      src/de/mpicbg/tds/knime/heatmap/renderer/HeatTrellis.java
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   bin/
#   src/de/mpicbg/tds/knime/heatmap/HeatMapModel.ucls
#   src/de/mpicbg/tds/knime/heatmap/diagram.ucls
no changes added to commit (use "git add" and/or "git commit -a")
关于分支机构的发展 #您有未合并的路径。 #(修复冲突并运行“git提交”) # #未合并路径: #(酌情使用“git add/rm…”标记分辨率) # #已被我们删除:src/de/mpicbg/tds/knime/hcstools/prefs/DoubleFieldEditor.java #已被我们删除:src/de/mpicbg/tds/knime/hcstools/prefs/HCSToolsPreferencePage.java #已被我们删除:src/de/mpicbg/tds/knime/heatmap/HeatMapModel.java #已被我们删除:src/de/mpicbg/tds/knime/heatmap/PlateViewer.java #已被我们删除:src/de/mpicbg/tds/knime/heatmap/color/LinearGradientTools.java #我们已删除:src/de/mpicbg/tds/knime/heatmap/dialog/PlateAttributeDialog.java #已被我们删除:src/de/mpicbg/tds/knime/heatmap/menu/TrellisMenu.java #已被我们删除:src/de/mpicbg/tds/knime/heatmap/menu/ViewMenu.java #我们已删除:src/de/mpicbg/tds/knime/heatmap/menu/wellattributembobox.java #已被我们删除:src/de/mpicbg/tds/knime/heatmap/renderer/HeatTrellis.java # #未跟踪的文件: #(使用“git add…”包含在将提交的内容中) # #垃圾箱/ #src/de/mpicbg/tds/knime/heatmap/HeatMapModel.ucls #src/de/mpicbg/tds/knime/heatmap/diagram.ucls 未向提交添加任何更改(使用“git add”和/或“git commit-a”)
我不知道现在该怎么办…

如果您想保留更改,但保留在新文件位置,使用mergetool(因此必须在删除文件和更改之间进行选择,或者保留文件,但它们不会在好的目录中)在任何情况下都不会令人满意

在这种情况下,当处于冲突状态时,我会将冲突文件(位于旧目录中)移动到新目录,git添加新文件,git rm旧文件(冲突)并提交

下面是该过程的详细信息(3个文件“file1”、“file2”和“file3”已被移动到“files”文件夹中,并在另一个分支中并行更新,执行移动的分支已首先合并,然后更新文件内容的分支在发生冲突后合并):

ghislain@debian:/tmp/git测试(主) >git合并--无ff添加文件内容 冲突(修改/删除):文件3在头中删除,在添加文件内容中修改。版本添加树中左侧文件3的文件内容。 冲突(修改/删除):文件2在头中删除,在添加文件内容中修改。版本添加树中剩余文件2的文件内容。 冲突(修改/删除):文件1在头中删除,在添加文件内容中修改。版本添加树中剩余文件1的文件内容。 自动合并失败;修复冲突,然后提交结果。 ghislain@debian:/tmp/git测试(主*+|合并) >git状态 论分行行长 您有未合并的路径。 (修复冲突并运行“git提交”) 未合并路径: (酌情使用“git add/rm…”标记分辨率) 已被我们删除:file1 已被我们删除:file2 已被我们删除:file3 未向提交添加任何更改(使用“git add”和/或“git commit-a”) ghislain@debian:/tmp/git测试(主*+|合并) >mv文件1文件2文件3文件 ghislain@debian:/tmp/git测试(主*+|合并) >git状态 论分行行长 您有未合并的路径。 (修复冲突并运行“git提交”) 未合并路径: (酌情使用“git add/rm…”标记分辨率) 已被我们删除:file1 已被我们删除:file2 已被我们删除:file3 未为提交而暂存的更改: (使用“git add…”更新将提交的内容) (使用“git签出--…”放弃工作目录中的更改) 已修改:文件/file1 修改:文件/file2 修改:文件/file3 未向提交添加任何更改(使用“git add”和/或“git commit-a”) ghislain@debian:/tmp/git测试(主*+|合并) >git添加文件 ghislain@debian:/tmp/git测试(主*+|合并) >git状态 论分行行长 您有未合并的路径。 (修复冲突并运行“git提交”) 要提交的更改: 已修改:文件/file1 修改:文件/file2 修改:文件/file3 未合并路径: (酌情使用“git add/rm…”标记分辨率) 已被我们删除:file1 已被我们删除:file2 已被我们删除:file3 ghislain@debian:/tmp/git测试(主*+|合并) >git rm文件1文件2文件3 文件1:需要合并 文件2:需要合并 文件3:需要合并 rm“文件1” rm“文件2” rm“文件3” ghislain@debian:/tmp/git测试(主+|合并) >git状态 论分行行长 所有冲突已修复,但您仍在合并。 (使用“git提交”结束合并) 要提交的更改: 已修改:文件/file1 修改:文件/file2 修改:文件/file3 ghislain@debian:/tmp/git测试(主+|合并) >git提交 [master 4e478c6]合并分支“添加文件内容” ghislain@debian:/tmp/git测试(主) >
如果问题更清楚的话,建议你一个解决方案会很有帮助。你的实际情况是什么?非常感谢你的例子。出于某种原因,我可以通过一些建议来解决我的问题(尽管我不知道如何解决…)。在我看来,你的方式是一个非常容易理解和干净的解决方案。我接受你的回答。如果移动文件的提交也修改了它们,那么这个解决方案将不起作用。它将放弃这些更改。 ghislain@debian: /tmp/git-test (master) > git merge --no-ff add-file-content CONFLICT (modify/delete): file3 deleted in HEAD and modified in add-file-content. Version add-file-content of file3 left in tree. CONFLICT (modify/delete): file2 deleted in HEAD and modified in add-file-content. Version add-file-content of file2 left in tree. CONFLICT (modify/delete): file1 deleted in HEAD and modified in add-file-content. Version add-file-content of file1 left in tree. Automatic merge failed; fix conflicts and then commit the result. ghislain@debian: /tmp/git-test (master *+|MERGING) > git status On branch master You have unmerged paths. (fix conflicts and run "git commit") Unmerged paths: (use "git add/rm ..." as appropriate to mark resolution) deleted by us: file1 deleted by us: file2 deleted by us: file3 no changes added to commit (use "git add" and/or "git commit -a") ghislain@debian: /tmp/git-test (master *+|MERGING) > mv file1 file2 file3 files ghislain@debian: /tmp/git-test (master *+|MERGING) > git status On branch master You have unmerged paths. (fix conflicts and run "git commit") Unmerged paths: (use "git add/rm ..." as appropriate to mark resolution) deleted by us: file1 deleted by us: file2 deleted by us: file3 Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: files/file1 modified: files/file2 modified: files/file3 no changes added to commit (use "git add" and/or "git commit -a") ghislain@debian: /tmp/git-test (master *+|MERGING) > git add files ghislain@debian: /tmp/git-test (master *+|MERGING) > git status On branch master You have unmerged paths. (fix conflicts and run "git commit") Changes to be committed: modified: files/file1 modified: files/file2 modified: files/file3 Unmerged paths: (use "git add/rm ..." as appropriate to mark resolution) deleted by us: file1 deleted by us: file2 deleted by us: file3 ghislain@debian: /tmp/git-test (master *+|MERGING) > git rm file1 file2 file3 file1: needs merge file2: needs merge file3: needs merge rm 'file1' rm 'file2' rm 'file3' ghislain@debian: /tmp/git-test (master +|MERGING) > git status On branch master All conflicts fixed but you are still merging. (use "git commit" to conclude merge) Changes to be committed: modified: files/file1 modified: files/file2 modified: files/file3 ghislain@debian: /tmp/git-test (master +|MERGING) > git commit [master 4e478c6] Merge branch 'add-file-content' ghislain@debian: /tmp/git-test (master) >