我第一次提交到git存储库;然后我后悔提交并想要恢复它。我试着
# git reset --hard HEAD~1
我得到了这样的信息:
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
此提交是存储库的第一次提交。知道如何撤销git的初始提交吗?
我第一次提交到git存储库;然后我后悔提交并想要恢复它。我试着
# git reset --hard HEAD~1
我得到了这样的信息:
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
此提交是存储库的第一次提交。知道如何撤销git的初始提交吗?
当前回答
从技术上讲,要恢复最初的提交,你需要做:
git revert HEAD
但是,由于这记录了一个新的提交,它会逆转上次提交的影响,您不妨自己进行一个新的提交,以修复最初提交所引入的问题。这样,您就可以保持最初的提交(即,您可以保持历史记录不变),这是您可能想要做的(特别是如果,例如,您已经推送到共享存储库)。否则,你可能更愿意重新开始。即,删除存储库并创建一个新的存储库。
其他回答
你只需要删除你所在的分支。你不能使用git branch -D,因为这样做有一个安全检查。您可以使用update-ref来做到这一点。
git update-ref -d HEAD
不要使用rm -rf .git或类似的东西,因为这将完全擦除你的整个存储库,包括所有其他分支,以及你试图重置的分支。
一种选择是删除存储库并创建一个新的存储库:
rm -rf .git
git init
在问题中规定的条件下:
提交是存储库中的第一次提交。 这意味着执行的命令非常少: git初始化, 大概是一些git添加操作, git提交, 这就是全部!
如果这些前提条件都满足,那么撤销初始提交的最简单方法是:
rm -fr .git
从git初始化的目录。然后,您可以重做git init以重新创建git存储库,并使用您后悔第一次没有做的任何合理更改重做添加,并重做最初的提交。
危险!这将删除Git存储库目录。
It removes the Git repository directory permanently and irrecoverably, unless you've got backups somewhere. Under the preconditions, you've nothing you want to keep in the repository, so you're not losing anything. All the files you added are still available in the working directories, assuming you have not modified them yet and have not deleted them, etc. However, doing this is safe only if you have nothing else in your repository at all. Under the circumstances described in the question 'commit repository first time — then regret it', it is safe. Very often, though, it is not safe.
这样做也可以安全地删除不需要的克隆存储库;它不会对克隆它的存储库造成损害。它会丢弃您在副本中所做的任何事情,但不会影响原始存储库。
要小心,但当前提条件满足时,它是安全有效的。
如果您已经对存储库做了其他想要保留的事情,那么这不是合适的技术—您的存储库不再满足合适的前提条件。
从技术上讲,要恢复最初的提交,你需要做:
git revert HEAD
但是,由于这记录了一个新的提交,它会逆转上次提交的影响,您不妨自己进行一个新的提交,以修复最初提交所引入的问题。这样,您就可以保持最初的提交(即,您可以保持历史记录不变),这是您可能想要做的(特别是如果,例如,您已经推送到共享存储库)。否则,你可能更愿意重新开始。即,删除存储库并创建一个新的存储库。
你可以删除HEAD并将你的存储库恢复到一个新的状态,在那里你可以创建一个新的初始提交:
git update-ref -d HEAD
在你创建一个新的提交后,如果你已经推送到远程,你将需要强制它到远程,以覆盖之前的初始提交:
git push --force origin