Answers:
您只需要删除您所在的分支。您不能使用它,git branch -D因为这样做会导致安全检查。您可以update-ref用来执行此操作。
git update-ref -d HEAD
千万不能使用rm -rf .git或类似这样的,因为这将事情彻底消灭整个仓库在内的所有其他部门以及分公司您尝试重置。
.gitignore。git add .,git commit -m "initial commit",git update-ref -D HEAD,创建.gitignore,通知了Git仍然看到它前面应该忽略添加的文件。换句话说git update-ref -d HEAD,没有使我回到最初提交之前的状态。
git reset --hard HEAD~1将删除所有其他提交的添加文件。显然,问题是如何在其他所有情况下都达到与该命令相同的状态。请参阅此要点以证明您的解决方案不起作用 gist.github.com/greggman/522fa69a21d6cfb3ff0b
git update-ref -d HEAD 没有真正恢复最初的承诺,但一直都添加到索引之前COMMITED变化。如果您还想删除这些更改,只需执行以下命令git reset --hard。即使答案不完整,也确实是最好的答案,因此请避免使用rm -fr .git(除非您知道自己在做什么)。
您可以删除HEAD并将存储库恢复到新状态,在其中可以创建新的初始提交:
git update-ref -d HEAD
创建新的提交后,如果已经推送到远程,则需要将其强制到远程以便覆盖先前的初始提交:
git push --force origin
这个问题是从这篇博文中链接的,并为较新版本的Git提出了替代解决方案:
git branch -m master old_master
git checkout --orphan master
git branch -D old_master
该解决方案假定:
master分支上只有一次提交old_master所以我可以随意使用该名称它会将现有分支重命名为,old_master并创建一个新的孤立分支master (就像为新存储库创建的一样),之后您可以自由删除old_master...。由你决定。
注意:移动或复制git分支会在删除时保留其reflog(请参见此代码),然后创建新分支会破坏它。由于您想恢复到没有任何历史记录的原始状态,因此您可能希望删除该分支,但是其他人可能要考虑此小注释。
在问题规定的条件下:
git init,git add手术git commit,如果满足这些先决条件,则撤消初始提交的最简单方法是:
rm -fr .git
从您执行的目录git init。然后,您可以重做git init以重新创建Git存储库,并在不感到第一次后悔的情况下重做所有有意义的更改,并重做初始提交。
危险!这将删除Git存储库目录。
除非您有备份,否则它将永久且不可恢复地删除Git存储库目录。在前提条件下,您什么都不想保留在存储库中,因此您不会丢失任何东西。假定您尚未修改它们并且还没有删除它们,等等,所有添加的文件仍然在工作目录中可用。但是,只有在您的存储库中什么都没有的情况下,这样做才是安全的。在“第一次提交存储库-然后后悔”问题中描述的情况下,它是安全的。但是,很多时候这并不安全。
执行此操作以删除不需要的克隆存储库也很安全;它不会对从其克隆的存储库造成损坏。它会丢弃您在副本中所做的所有操作,但不会影响原始存储库。
注意,但前提是满足安全性和有效性。
如果您要保存的存储库已经做过其他事情,那么这不是适当的技术-您的存储库不再符合适合此存储的先决条件。
你不能 所以:
rm -rf .git/
git init
git add -A
git commit -m 'Your new commit message'
git reset --hard,那他为什么git add -A呢?
git statusgit rebase尝试了这个过程,希望重新分配第一次提交,然后又做了,令我惊讶的是git说fatal: Not a git repository (or any parent up to mount point ...)!