我有一个Git存储库,其中只有一个提交存在。我想把这个提交移到临时区域。已知命令是git reset --soft
。所以我输入了类似的东西:
$ git --version
git version 2.3.2 (Apple Git-55)
$ git log
commit 2d70c0de8824967378da348afa7be6eca9839dcc
Author: gtchoi <gtchoi@nhnent.com>
Date: Sat Aug 8 18:54:25 2015 +0900
the first commit.
$ git reset --soft HEAD~1
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
$ git reset --soft HEAD^
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
$ git reset --soft 2d70c0de8824967378da348afa7be6eca9839dcc
$ git log
commit 2d70c0de8824967378da348afa7be6eca9839dcc
Author: gtchoi <gtchoi@nhnent.com>
Date: Sat Aug 8 18:54:25 2015 +0900
the first commit.
参数HEAD~1
和HEAD^
导致致命错误,输入git reset <SHA-1 of commit>
时没有结果,第一次提交不会被删除。这有什么问题?这个错误吗?
答案 0 :(得分:0)
在Git中, HEAD 是对最新提交的引用(指向最近签出的提交对象的指针)。因此,在您的情况下, HEAD 是指您的唯一提交。
根据Git的语法, HEAD ^(或HEAD~1)指的是提交对象,它是当前分支中第二次完成提交。在你的情况下,这根本不存在。因此错误是预期的,而不是错误。
现在,谈谈你的问题,让我们看看我们如何能够解决这个问题:
git reset --soft
这只会重置HEAD指针。这不会删除提交,也不会破坏分支和提交对象之间的连接。
您可以通过运行:
来恢复提交,而不是删除git revert
正如预期的那样,这只会添加另一个恢复更改的提交。很可能这不是你想要的。
做你想做的事的简单(和干净)方式是:
在项目目录中进行任何更改,您可能在第一次提交时遗漏了这些更改。然后将所有这些更改添加到暂存区域。
git add --all
并运行:
git commit --amend -m“第一次提交”
您没有在历史记录中替换该提交对象。请参阅运行:
git log --oneline