我正在将一个分支合并到我自己的分支中。
另一个分支(“他们”)删除了我编辑过的文件。
当我合并时,我遇到了冲突。 git status
显示我的文件已被“他们删除”。
当我添加这个已删除的文件并提交时,该文件仍然存在。 为什么是这样?我想删除文件,这就是我添加删除的原因。 Example screenshot here
答案 0 :(得分:2)
通过发出 git add
你告诉 Git 你仍然想保留这个文件。
在这种情况下,您需要发出 git rm
来告诉 Git 您不想保留该文件。
答案 1 :(得分:2)
我正在将一个分支合并到我自己的分支中。另一个分支(“他们”)删除了我编辑过的文件。当我合并时,我遇到了冲突。
没错。这就是文件没有删除的原因:你修改了它,他们删除了它,而 Git 不知道如何将这两个操作结合起来。
<块引用>git status
显示我的文件已被“他们删除”。
请注意,此时 git status
显示了一些特殊的东西。一个“正常的”git status
——这里我用正常这个词来表示在没有涉及这个特定文件的冲突时发生的——会告诉你关于git diff --name-status
比较该文件的 HEAD-vs-index 和 index-vs-working-tree 的结果。但由于该文件存在冲突,git status
会打印出完全不同的内容。
“被他们删除”状态是以下文件索引信息的结果(这里我将其称为“file F ”):
当我添加这个已删除的文件并提交时,该文件仍然存在。这是为什么?
git add
命令最初会忽略 F 的非零阶段副本。相反,它会查看您的工作树:
冲突消息在发出时提醒您,Git 将您修改后的文件保留在您的工作树中 — 出现在第 2 阶段 Git 索引中的相同副本。由于您没有删除此副本,git add
将此副本放入第 0 阶段。
您可以删除文件 F,然后像以前一样使用 git add
,或者只使用 git rm F
。使用 git rm
时,您有时会收到来自 Git 的投诉,但文件确实会被删除。
答案 2 :(得分:0)
首先删除新分支中的“foo”,当你将它合并到 master 时,它不应该显示 foo 文件 但在那之后你切换到 master 分支并再次创建一个新的 foo 并将新信息放入其中 所以这会产生冲突 先在master中创建一个foo文件然后在newbranch中删除它然后合并