簡體   English   中英

從我的git歷史中刪除4個提交

[英]Remove 4 commits from my git history

我做了一些提交並將它們推送到我的存儲庫中。 然后我做了拉取請求,但我意識到有些提交我不想在拉請求中。

它們看起來像這樣:

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

你可以做一個互動的rebase

假設您的頭部位於示例中的ab1c41c ,請按如下方式調用rebase

git rebase -i HEAD~7

這告訴git你想操縱最后8個左右的提交。 您將被刪除到您的編輯器中,其中包含提交列表和一些說明。

刪除包含要刪除,保存和退出的提交的行。 Git會預先制作rebase,就是這樣。

請記住,由於rebase,如果你想推送到同一個分支,你需要傳遞選項--force

免責聲明重新定位和強行推動會導致您失去工作或者讓人失望,所以請確保您了解自己在做什么。 :)

正如Blake Taylor在這里提到的,您可以使用交互式rebase重新排序提交(或)刪除中間提交。

但在將這些提交推送到公共存儲庫之前,必須這樣做。 請參考這里 在您的情況下,這些提交已經在公共回購中提供。 所以,我不建議使用rebase。

如果您不希望在工作目錄中提交這些提交。

  • a)創建一個分支,指向86f2509(工作樹中的最后一個穩定提交)。

    git checkout -b <branch name> 86f2509

  • b) Cherry Pick你想要的那些提交。 在您的情況下ab1c41c8b38955

    git cherry-pick 8b38955 ab1c41c

現在你的工作目錄不會有那些不需要的提交。

只需在之前的提交中使用--hard重置:

git reset --hard 86f2509

當心:你將永遠失去那些承諾,無法回頭。 此外,如果某人已經提交了您想要擺脫的提交,事情可能會變得混亂。 在這種情況下,你可能想看看'git revert'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM