如何删除git中的第一个提交?
我很好奇如何删除git中的第一个提交如何删除git中的第一个提交?,git,repository,commit,git-commit,Git,Repository,Commit,Git Commit,我很好奇如何删除git中的第一个提交 提交任何东西之前的修订是什么?此修订版是否有名称或标记?在第一次提交之前没有任何内容,因为每次提交都引用一个父提交。这使得第一次提交非常特殊(孤立提交),因此无法引用以前的“状态” 因此,如果您想要修复提交,您可以简单地git commit--amend:这将修改提交,而无需创建另一个提交 如果您只想从头开始,请删除.git存储库,并使用git init创建另一个存储库如果您想保留其他分支,但例如,让主分支重新开始,而不必与其他分支共享历史,实现这一点的一个
提交任何东西之前的修订是什么?此修订版是否有名称或标记?在第一次提交之前没有任何内容,因为每次提交都引用一个父提交。这使得第一次提交非常特殊(孤立提交),因此无法引用以前的“状态” 因此,如果您想要修复提交,您可以简单地
git commit--amend
:这将修改提交,而无需创建另一个提交
如果您只想从头开始,请删除
.git
存储库,并使用git init
创建另一个存储库如果您想保留其他分支,但例如,让主分支重新开始,而不必与其他分支共享历史,实现这一点的一个安全方法是创建一个新的存储库,并将其内容推送到旧版本中:
cd ..
git init newrepo
cd newrepo
# make some initial commits
git push ../oldrepo master:newmaster
这将在旧存储库中创建newmaster
分支,其历史记录与任何其他分支都不相同。当然,您也可以使用git push-f
覆盖主文件
如果要销毁所有分支和所有现有内容,只需运行
rm -rf .git/
您可能只想编辑第一次提交(因为git repo中总是有第一次提交)。考虑使用<代码> Git提交-修改-重置作者<代码>,而不是通常的代码> Git提交-修改< /C> > < /P> < P>您可以做的另一种方式是:
git签出dev
git branch-D master
git checkout--orphan master
当然,所有这些都取决于您的用例,但是如果您有多个分支,那么删除
.git
目录就没有意义了。对于我来说,最安全的方法是使用update ref
命令:
git update-ref -d HEAD
git rebase -i --root
它将删除命名的引用头
,因此它将重置(轻轻地,您不会丢失您的工作)当前分支的所有提交
如果要将第一次提交与第二次提交合并,可以使用rebase
命令:
git update-ref -d HEAD
git rebase -i --root
最后一种方法是创建一个孤立分支,一个具有相同内容但没有任何提交历史记录的分支,并在其上提交新内容:
git checkout --orphan <new-branch-name>
git签出--孤立
如果您刚刚提交了它,但没有推送它,那么只需删除.git目录,然后再次删除git init
。问题的答案取决于:
- 您希望删除分支上的第一个也是唯一一个提交(同时保留其他分支不变),或者
- 您希望删除某个分支上的第一次提交,同时“保留”后续提交(以及其他分支)
因此,我希望这个答案澄清了可能不明显的问题——需要采取两种不同的方法,针对两种不同(或多或少合理)的情况,这两种情况都是您可能希望能够做到的,为了完全掌握操作的要求。我一直在寻找一种方法来撤销回购中的所有git提交,就像它们从未发生过一样 重新定基将在一定程度上起作用。然而,第一次(按时间顺序是最早的git提交)总是会有问题,因为它没有父级,所以会出错 这些答案对我来说都不能完全解决这个问题。但经过大量的搜索和尝试和错误,我发现这是可行的
git update-ref -d HEAD
git push origin master -f
希望这对你有帮助。祝你度过愉快的一天。从git开始,你应该知道修改是没有意义的。您可以谈论提交或它们的相对SHA。还有,你为什么要这么做?第一次提交是所有内容的基础。您可以将几个提交挤在一起,包括第一次提交,它将成为新的第一次提交,但是删除第一次提交(或者删除除最后一次提交以外的任何提交)意味着什么呢?@Shahbaz是的,这是最好的方法,请看下面的例子:您可以使用
git rebase-i--root
。有关详细信息,请参阅以下SO答案:的可能副本具有删除当前分支的根提交的正确解决方案:git filter branch--父筛选器“sed's/-p/'”HEAD
此答案不正确:有一种方法可以恢复到第一次提交之前的状态。请参见下文。如果最初配置错误,则--amend
也不会正确更新作者。这正是我所需要的,所以我使用了被接受的答案,然后做了一个新的承诺。我真的不明白为什么有人认为没有答案,即使显然没有(我把这个短语放在这里,因为答案很旧)。这不是被接受的答案,这太糟糕了。同样糟糕的是,谷歌上的大多数点击都或多或少地说“你不能撤销第一次提交”。这对我起了作用。谢谢感谢@danielpops对您的支持!很高兴看到我回答了