git commit给出错误:传递了空提交集

Nyx*_*nyx 8 git github

当我试图恢复到之前的提交时,我试过:

git revert --no-commit 0766c053..HEAD
Run Code Online (Sandbox Code Playgroud)

但是这给出了一个错误:

empty commit set passed
Run Code Online (Sandbox Code Playgroud)

问题:错误意味着什么,revert命令出了什么问题?

Sas*_*olf 5

在我看来,您误用了double dot注释来指定提交范围。

所以你的范围不会返回任何提交,这意味着revert不能做任何事情,因为你有效地说“不恢复提交”。

gitpro本书解释了double dot注解(链接到章)相当扎实:

最常见的范围规范是双点语法。这基本上要求 Git 解决一系列提交,这些提交可从一个提交访问但无法从另一个提交访问。例如,假设您有一个类似于图 6-1 的提交历史记录。

图 6-1。 范围选择的示例历史记录。

您想查看您的实验分支中尚未合并到您的主分支中的内容。你可以让 Git 向你显示那些提交的日志master..experiment——这意味着“所有提交都可以通过实验访问,但主服务器无法访问。” 为了在这些示例中简洁明了,我将使用图中提交对象的字母代替实际日志输出,按它们显示的顺序:

$ git log master..experiment
D
C

另一方面,如果你想看到相反的情况——所有的提交master都不在experiment——你可以反转分支名称。experiment..master向您显示master无法访问的所有内容experiment

$ git log experiment..master
F
E


mat*_*t3o 5

移除 ..HEAD 部分。至少在我的系统 (git v2.7.4) 上这解决了这个问题。

git revert --no-commit 0766c053