[英]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的評論,它看起來像我們想壁球一起提交lF1
和lG1
,讓它們看起來像一個單一的承諾,介紹了變化和lF1
,在去除憑據lG1
。 可以通過以下命令開始。
git checkout abc
git rebase -i lE1
在出現的編輯器中,將提交lG1
的pick
更改為squash
,然后保存文件並退出編輯器。 瀏覽菜單的其余部分,然后您應該獲得所需的歷史記錄,然后可以將其快速合並到master
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.