簡體   English   中英

如何在最近一次提交的情況下使用git checkout忽略所有先前的提交?

[英]How can I git checkout with just last commit ignoring all previous commit?

我已經在幾次提交中將一些憑據推送到遠程原始主機。

有很多更改,只想刪除憑據即可。

說:

Local Branch:  A->B->C->D1->E1->F1(HEAD) (master)
                     |->lC1->lD1->lE1->lF1 (l_abc) 

Remote Branch:  A->B->C->D1->E1->F1(HEAD) (master)

E1中錯誤推送的憑據,所以我刪除了一些提交,並在遠程和本地主服務器中的D1處創建了HEAD

git reset --hard HEAD^^      
git push -f origin master   

現在的結構是:

Local Branch:  A->B->C->D1(HEAD) (master)
                     |->lC1->Dl1->lE1->lF1 (abc) 

Remote Branch:  A->B->C->D1(HEAD) (master)

即使在Local: lC1->lD1->lE1->lF1我也擁有這些憑據,所以我無法合並它,因為這將再次創建具有憑據的提交,

有沒有一種方法可以在僅使用最后一個提交(lG1)並刪除到其他分支的憑據並忽略先前的提交之后簽出lF1->lG1

看起來您想讓git checkout master ,然后讓git cherry-pick lG1將該提交僅提交給master。 最后,您可以再次使用git push -f origin master


更新:基於OP的評論,它看起來像我們想壁球一起提交lF1lG1 ,讓它們看起來像一個單一的承諾,介紹了變化和lF1 ,在去除憑據lG1 可以通過以下命令開始。

git checkout abc
git rebase -i lE1

在出現的編輯器中,將提交lG1pick更改為squash ,然后保存文件並退出編輯器。 瀏覽菜單的其余部分,然后您應該獲得所需的歷史記錄,然后可以將其快速合並到master

暫無
暫無

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

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