在Git中删除/恢复合并

时间:2012-07-29 21:22:58

标签: git github

我知道Git有大量的文档,关于它的帖子很多(例如我看过How to delete a 'git commit'this但是没有任何工作,我和我#39;我不知道该怎么做。

我有一个回购,到目前为止只有我承诺,但我最近开始使用两台不同的笔记本电脑,不知怎的,我不小心推了一些Git认为合并的废话,然后我推了最新的改变

我一直试图弄清楚如何完全删除最后两次提交,在那个命运日之前将repo倒回到状态(因为我现在有一堆新的提交我需要进入该repo) 。如果您愿意给我任何指示,请注意,repo托管在github here上。

4 个答案:

答案 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)而且我不知道该怎么做。)

我会留给更有经验的人来决定是否应该删除这个问题。