Git合并冲突修改/删除

3

我在git仓库上犯了一个错误,需要帮助解决它,因为我的git操作不是那么熟练。我正在处理两个分支:EBT_BranchScheduling_Branch。在Scheduling_Branch上有一些变更我还没有准备好提交,所以我运行了git stashgit checkout EBT_Branch。然后我进行了一次提交并运行了git checkout Scheduling_Branchgit stash apply,但出现了以下错误,我无法解决:

On branch Scheduling_Branch
Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add/rm <file>..." as appropriate to mark resolution)

    deleted by us:   dump.rdb

no changes added to commit (use "git add" and/or "git commit -a") 

在此之前我一直在收到一个错误提示,告诉我无法合并二进制文件,所以我尝试运行git rm dump.rdb将其从git中删除,然后再次运行git stash apply,这就是我得到上面那个消息的原因。
我不小心提交了Redis服务器的dump.rdb文件,在后来将其加入我的.gitignore,但现在看来好像无法摆脱它。我想知道的是如何才能除去dump.rdb
1个回答

2
看起来你创建的暂存区包括对“dump.rdb”的更改,但是你正在尝试将该暂存区应用到已删除“dump.rdb”的分支上。当Git尝试应用暂存区时,它想要将暂存的更改应用到“dump.rdb”,但是由于该文件不存在,因此无法应用。这就是你看到的消息。
要解决合并冲突,只需再次运行“git rm dump.rdb”。完成后,你将不会在“git status”输出中看到该消息。
当然,每次尝试重新应用该暂存区时,你都会看到相同的消息,因为该暂存区仍然包含对“dump.rdb”的更改。最快解决方法是用一个不记录该文件更改的新暂存区替换旧的。具体操作是使用“git stash apply”应用暂存区,“git stash drop”删除刚刚应用的暂存区,“git rm dump.rdb”解决冲突,然后使用“git stash save”创建新的暂存区。
(两个简短说明:1. 你可以使用“git stash branch”创建新的暂存区,在处理应用暂存区的合并冲突时有时很有用。但是,在我们知道如何轻松解决合并冲突的情况下,我认为这没有帮助。2. 通常使用“git stash pop”更快,因为它同时执行“apply”和“drop”,但在这种情况下,“pop”将拒绝“drop”,因为存在合并冲突,因此“apply”和“pop”的行为相同。)
关于“.gitignore”的行为解释:一旦你将文件添加到Git中,Git会忽略它是否在“.gitignore”中或类似的文件中 - 它假定由于你已经提交了该文件,因此你不想忽略它。要使“.gitignore”实际上让Git忽略该文件,你需要将其从Git对仓库的视图中删除。

太有道理了!谢谢!我已经成功清除了dump.rdb文件在我的Scheduling_Branch中。 - Daniel Bonnell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接