我正在尝试通过虚拟项目学习git,但遇到了问题。我试图从我的存储库中删除一个文件,所以它不会显示在我的github存储库页面上。因此,我删除了master分支上的文件并提交了更改。然后我发现了一个问题,想回去。我通过git checkout -b <branch-name> <commit hash>
在新分支中签出了我的提交。到目前为止,我什至还把我删除的文件放回到了文件夹中。现在,我只需要将其与我的master分支合并,以便也具有已删除的文件。但是,当我先执行git checkout master
然后执行git merge <branch-name>
时。它只是说该分支已经是最新的,即使当我进入master分支时我显然看不到已删除的文件。
我在这个新创建的分支上尝试提交更改,如下面的评论所述,但这只是说分支已经是最新的,并且工作树很清楚。
对于这些提交我有些困惑,可能做错了什么。问题是什么?如何解决并避免将来发生?
答案 0 :(得分:0)
考虑到较早的提交已经成为master
历史的一部分,因此从较早的提交创建分支还不足以将其合并回来。
如果您想从较早的提交中获取文件,一个简单的解决方法是:
master
checkout the file from the old commit
git checkout <old_commit_sha> -- old_file
添加,提交和推送。
答案 1 :(得分:0)
如评论之一中所述,由于提交已存在于master分支中,因此Git无法看到两个分支之间的任何差异。
似乎您的用例是还原以前在master分支上所做的提交。因此,您应该能够执行以下操作:
git checkout master
git log
相同)git revert <commit_id>
git revert将准备新的还原提交,删除在该commit_id中所做的所有更改,并且可以直接将其提交或合并到master分支中。