从我的git的历史记录中删除4个提交(Remove 4 commits from my git hi

2019-07-30 00:57发布

我已经做了一些提交和他们推到我的仓库。 于是我做了一个拉请求,但我意识到有一些提交我不想在拉请求。

他们是这样的:

My commits look like this:

Correct HTML    
ab1c41c 

HTML escaping   
8b38955 

Merge branch 'master' into internationalized    
2854662

Modified config 
b942f13 

tried pushing   
b73d792 

Added assets    
f20106e 

Added config    
408118f 

Fixed views conflicts   
86f2509 

added layouts   
da27e11 

Fixed layout markup
92d6bcc 

如果我想摆脱这些提交的:

Modified config 
b942f13 

tried pushing   
b73d792 

Added assets    
f20106e 

Added config    
408118f 

我该怎么做? 请注意,我想保持这些的,其在时间之前的那些我想删除:

Correct HTML    
ab1c41c 

HTML escaping   
8b38955

Answer 1:

你可以做一个互动变基 。

假设你的头在ab1c41c从你的榜样,调用底垫如下

git rebase -i HEAD~7

这就告诉Git的要处理的最后8个左右提交。 你会被放入与提交和一些指令的列表编辑器。

删除包含提交删除,保存并退出该行。 Git会瓶坯的底垫,这就是它。

请记住,这是因为底垫,如果你要推到你需要通过选择同一分支--force

免责声明衍合和力推可能导致你失去工作或小便的人了,所以只要确保你明白自己在做什么。 :)



Answer 2:

由于布莱克·泰勒提到这里 ,你可以使用互动的rebase重新排序提交(或)删除中间的提交。

但是,必须做,你把这些提交到公共仓库前。 请参阅这里 。 在你的情况,这些提交已经在公共回购可用。 所以,我不建议使用底垫。

如果你不想在你的工作目录的提交。

  • a)创建一个分支,它指向86f2509(最后稳定在你的工作树提交)。

    git checkout -b <branch name> 86f2509

  • B) Cherry Pick那些你想要的提交。 在你的情况ab1c41c8b38955

    git cherry-pick 8b38955 ab1c41c

现在你的工作目录不会有那些不需要提交。



Answer 3:

只是 - 硬重置在提交之前:

git reset --hard 86f2509

请注意:你将永远失去这些提交,没办法回去。 另外,如果有人在你想摆脱的提交已经退出,事情可能会变得混乱。 在这种情况下,你可能想看看“git的恢复”。



文章来源: Remove 4 commits from my git history