簡體   English   中英

刪除中間的GIT提交

[英]Remove an intermediate GIT commit

我有一個中間的git commit,現在我已將其合並到代碼中。 它是錯誤地發生的。 我有2個選擇:

  1. 從gerrit刪除項目,為此我必須安裝delete-project插件
  2. 從GIT存儲庫中刪除提交。

我想對使用第二個選項提出建議,因為我沒有安裝插件的管理員權限。

提交1

提交2

我想保留提交1並刪除提交2。提交2是目錄,其中包含許多文件。

有什么建議么 ?

如果您想保留最新的提交,最好使用git rebase: http : //git-scm.com/docs/git-rebase

正常還原怎么辦? 您要清除它的大小嗎?

然后,您需要“ Force Push訪問權限[編輯:Gerrit中],這使您可以執行

git push --force

在您跳過該提交之后

git reset --hard HEAD^

請注意,與一組開發人員一起使用存儲庫時,應避免重寫歷史記錄。

我想你在找

$ git reset --hard REF

此處REF將是commit 1 SHA1

好的,所以您想擺脫一次提交。

如果尚未推出該提交,則可以使用以下命令將其本地刪除

git reset --hard HEAD~

它會在當前版本之前簽出修訂。
您之前的歷史記錄: commit1--commit2
您的歷史記錄: commit1

如果您已經推送了提交,只要commit2沒有關鍵commit2 (巨大,密碼等),最好將commit2保留在歷史記錄中並還原提交而不是將其刪除:

git revert <sha-of-commit2>

這將創建一個NEW提交,該提交將還原commit2所做的commit2
您之前的歷史記錄: commit1--commit2
之后的歷史記錄: commit1--commit2--commit3

暫無
暫無

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

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