在将分支与master合并时,Git没有检测到差异

时间:2018-11-06 12:29:51

标签: git git-merge

我正在尝试通过虚拟项目学习git,但遇到了问题。我试图从我的存储库中删除一个文件,所以它不会显示在我的github存储库页面上。因此,我删除了master分支上的文件并提交了更改。然后我发现了一个问题,想回去。我通过git checkout -b <branch-name> <commit hash>在新分支中签出了我的提交。到目前为止,我什至还把我删除的文件放回到了文件夹中。现在,我只需要将其与我的master分支合并,以便也具有已删除的文件。但是,当我先执行git checkout master然后执行git merge <branch-name>时。它只是说该分支已经是最新的,即使当我进入master分支时我显然看不到已删除的文件。 我在这个新创建的分支上尝试提交更改,如下面的评论所述,但这只是说分支已经是最新的,并且工作树很清楚。

对于这些提交我有些困惑,可能做错了什么。问题是什么?如何解决并避免将来发生?

2 个答案:

答案 0 :(得分:0)

考虑到较早的提交已经成为master历史的一部分,因此从较早的提交创建分支还不足以将其合并回来。

如果您想从较早的提交中获取文件,一个简单的解决方法是:

答案 1 :(得分:0)

如评论之一中所述,由于提交已存在于master分支中,因此Git无法看到两个分支之间的任何差异。

似乎您的用例是还原以前在master分支上所做的提交。因此,您应该能够执行以下操作:

  • git checkout master
  • 找到在其中删除文件的提交的提交ID。 (使用git log相同)
  • git revert <commit_id>

git revert将准备新的还原提交,删除在该commit_id中所做的所有更改,并且可以直接将其提交或合并到master分支中。