Git Merge Conflict - 删除远程文件,更改本地文件

xyl*_*lar 22 git git-merge git-merge-conflict

我合并了来自另一个分支的更改,但是我遇到了冲突,因为远程分支上的文件已被删除,但本地分支上的文件已更改.

我想删除该文件 - 我试过git rm path/to/file但它说file: needs merge.删除文件并提交合并的最佳方法是什么?

for*_*rk0 27

尝试使用--force参数:

git rm --force <file>
Run Code Online (Sandbox Code Playgroud)

如果要将文件保留在文件系统中:

git rm --cached <file>
Run Code Online (Sandbox Code Playgroud)

  • 得到了同样的问题,但`--force`不起作用,它仍然说文件的"需要合并" (7认同)
  • @AndrewBullock表示,但仍会删除文件。它是诊断程序,有些人可能认为它有点过分。 (2认同)
  • 如果您解释了您正在使用的命令,这将是一个更好的答案! (2认同)

Von*_*onC 7

我试过了,git rm path/to/file但它说文件:needs merge

您将不再看到 Git 2.23(Q3 0219,七年后)的错误消息

git rmneeds merge在实际删除路径之前解决用于泄漏内部消息的冲突路径“ ”,这令人困惑。
这已得到纠正。

请参阅Junio C Hamano ()提交的 b2b1f61(2019 年 7 月 17 日(由Junio C Hamano合并-- --提交 5e9d978 中,2019 年 7 月 25 日)gitster
gitster

rm:通过删除来解决不是一个值得警告的事件

当解决路径上的冲突以支持删除它时,git rm在其上使用“ ”是这样做的标准方法。
但是,needs merge在该操作期间,用户会收到一条“ ”消息:

$ git merge side-branch
$ edit conflicted-path-1
$ git add conflicted-path-1
$ git rm conflicted-path-2
conflicted-path-2: needs merge
rm 'conflicted-path-2'
Run Code Online (Sandbox Code Playgroud)

git rm确实会执行由“ ”删除的操作,但未入门的用户可能会发现它令人困惑:
needs merge?所以我需要先解决冲突才能删除它???”

该消息来自update-index --refresh内部调用的“ ”,以确保“ git rm”知道哪些路径是干净的,哪些路径是脏的,以防止删除相对于没有“ -f”选项的索引修改的路径。

不知何故,我们最终没有压制这条渗透到 UI 表面的消息。

使用与“ git commit”、“ git describe”等相同的机制来压制消息。