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

Jul*_*uly 5 git git-merge merge-conflict-resolution

到目前为止,我还没有用 git 做这么多。现在,我有以下问题。虽然我做了一些本地修改和提交,但我的同事在新分支中重组了文件和文件夹。然后,我添加了一个远程跟踪分支(反映他的更改)并尝试将我的修改合并到其中。当然,当文件移动到另一个位置时它会失败。我怎样才能继续?'git status' 告诉我这个:

# 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")
Run Code Online (Sandbox Code Playgroud)

我不知道现在该怎么办...

pad*_*win 5

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

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

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

ghislain@debian: /tmp/git-test (master)
> git merge --no-ff 添加文件内容 
CONFLICT(修改/删除):file3 在 HEAD 中删除并在 add-file-content 中修改。file3 的版本 add-file-content 留在树中。
CONFLICT(修改/删除):file2 在 HEAD 中删除并在 add-file-content 中修改。file2 的版本 add-file-content 留在树中。
CONFLICT(修改/删除):file1 在 HEAD 中删除并在 add-file-content 中修改。文件 1 的版本 add-file-content 留在树中。
自动合并失败;修复冲突,然后提交结果。
ghislain@debian: /tmp/git-test (master *+|MERGING)
> git 状态
在分支主
您有未合并的路径。
  (修复冲突并运行“git commit”)

未合并的路径:
  (根据需要使用“git add/rm ...”来标记分辨率)

    被我们删除:file1
    被我们删除:file2
    被我们删除:file3

未向提交添加任何更改(使用“git add”和/或“git commit -a”)
ghislain@debian: /tmp/git-test (master *+|MERGING)
> mv 文件 1 文件 2 文件 3 文件
ghislain@debian: /tmp/git-test (master *+|MERGING)
> git 状态
在分支主
您有未合并的路径。
  (修复冲突并运行“git commit”)

未合并的路径:
  (根据需要使用“git add/rm ...”来标记分辨率)

    被我们删除:file1
    被我们删除:file2
    被我们删除:file3

未为提交而暂存的更改:
  (使用“git add ...”来更新将提交的内容)
  (使用“git checkout -- ...”放弃工作目录中的更改)

    修改:文件/文件1
    修改:文件/文件2
    修改:文件/文件3

未向提交添加任何更改(使用“git add”和/或“git commit -a”)
ghislain@debian: /tmp/git-test (master *+|MERGING)
> git 添加文件
ghislain@debian: /tmp/git-test (master *+|MERGING)
> git 状态
在分支主
您有未合并的路径。
  (修复冲突并运行“git commit”)

要提交的更改:

    修改:文件/文件1
    修改:文件/文件2
    修改:文件/文件3

未合并的路径:
  (根据需要使用“git add/rm ...”来标记分辨率)

    被我们删除:file1
    被我们删除:file2
    被我们删除:file3

ghislain@debian: /tmp/git-test (master *+|MERGING)
> git rm 文件 1 文件 2 文件 3
文件 1:需要合并
文件 2:需要合并
文件 3:需要合并
rm'文件1'
rm'文件2'
rm'文件3'
ghislain@debian: /tmp/git-test (master +|MERGING)
> git 状态
在分支主
所有冲突都已解决,但您仍在合并。
  (使用“git commit”结束合并)

要提交的更改:

    修改:文件/文件1
    修改:文件/文件2
    修改:文件/文件3

ghislain@debian: /tmp/git-test (master +|MERGING)
> 提交
[master 4e478c6] 合并分支“添加文件内容”
ghislain@debian: /tmp/git-test (master)
> 

  • 如果移动文件的提交也修改了它们,则此解决方案将不起作用。它将丢弃这些更改。 (2认同)