我知道Git有大量的文档,关于它的帖子很多(例如我看过How to delete a 'git commit'和this但是没有任何工作,我和我#39;我不知道该怎么做。
我有一个回购,到目前为止只有我承诺,但我最近开始使用两台不同的笔记本电脑,不知怎的,我不小心推了一些Git认为合并的废话,然后我推了最新的改变
我一直试图弄清楚如何完全删除最后两次提交,在那个命运日之前将repo倒回到状态(因为我现在有一堆新的提交我需要进入该repo) 。如果您愿意给我任何指示,请注意,repo托管在github here上。
答案 0 :(得分:2)
对于某个新人来说,最简单的事情就是使用gitk --all。
而不是git reset --hard HEAD^
。
通过这种方式,您可以查看所有历史记录。当前分支以粗体显示。您可以右键单击之前提交的提交,然后选择"在此处重置当前分支"。系统将提示您执行何种重置。选择" hard"你应该回到你想去的地方。
答案 1 :(得分:1)
要删除最近的提交,只需使用git reset --hard HEAD^
即可。如果最近的提交是合并,则会返回到第一个父级(即merge
/ pull
运行之前的状态)。
如果您可以确定您希望成为分支提示的确切提交,则可以使用git reset --hard $SHA
,其中$SHA
是相关提交。
答案 2 :(得分:0)
这对我有用(通过记忆):
git reset --hard HEAD^^
git push --force HEAD:master
git pull
答案 3 :(得分:0)
感谢Shahbaz发布的问题an answer,我最初尝试了
git push -f origin HEAD^^:master
似乎完全删除了最后两个提交。但是,只要我对本地文件进行了一些更改并进行了推送,旧的提交就会显示出来! :(
再次尝试之后,这次使用HEAD^^^
(因为我现在需要删除最后3次提交),我查看git log
并看到所有内容仍在本地。无知如何解决这个问题,我只是删除了本地目录,重新克隆了repo,并手动复制了我新修改的文件。最后,添加和推送并没有带回旧的不必要的提交。
显然,我确信有更好的方法,但我无法通过追随你们可爱的人们的建议来实现。 (示例:我尝试了git rebase -i HEAD~4
,但我不理解编辑器中的输出 - 它让位线太多(9)而且我不知道该怎么做。)
我会留给更有经验的人来决定是否应该删除这个问题。