簡體   English   中英

Git 刪除根提交

[英]Git remove root commit

我不能用 git 做很多事情,我想從我的倉庫中刪除一個提交,因為我上傳了錯誤的東西。

我使用git revert <the_commit>但由於提交是 root 並且我無法刪除它。 致命:無法還原根提交

在這種情況下該怎么辦?

請不要在這里給我指向其他主題的鏈接,我閱讀了它們,但我不明白該怎么做,我需要一些關於刪除某些提交的基本示例。

您可以使用git filter-branch來執行此操作。 首先,確定要刪除的根目錄中的提交 ID。 我將用<the_commit>來表示。 然后,運行git filter-branch使用--parent-filter和一個sed命令剪斷該父級:

git filter-branch --parent-filter "sed 's/-p <the_commit>//'" HEAD

這是我剛剛嘗試過的一個示例的記錄:

$ git log
commit 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8
Author: Greg Hewgill <greg@example.com>
Date:   Fri May 27 20:54:27 2011 +1200

    three

commit a8a410d2361824cbd518a48225e9402a691be93f
Author: Greg Hewgill <greg@example.com>
Date:   Fri May 27 20:54:17 2011 +1200

    two

commit 3171d512d98f6bc5f3c2469312930c0d32d3aa07
Author: Greg Hewgill <greg@example.com>
Date:   Fri May 27 20:54:00 2011 +1200

    one
$ git filter-branch --parent-filter "sed 's/-p 3171d512d98f6bc5f3c2469312930c0d32d3aa07//'" HEAD
Rewrite 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8 (3/3)
Ref 'refs/heads/master' was rewritten
$ git log
commit 489ec1ee20e0dd20cd835ceebf157f628cd75a44
Author: Greg Hewgill <greg@example.com>
Date:   Fri May 27 20:54:27 2011 +1200

    three

commit a6f5ee410c9ea4fca6fbff265149b7fc555241eb
Author: Greg Hewgill <greg@example.com>
Date:   Fri May 27 20:54:17 2011 +1200

    two
$ 

要刪除根提交,您只需刪除可以訪問它的所有分支(和標簽)。

這可以通過git branch -D branch-name來完成。 (您必須首先檢查另一個不引用此根提交的分支,因為我認為您無法刪除當前分支。)

如果您想保留此分支上的其他提交並且只刪除根, git filter-branch更好,請參閱 Greg 的答案。

暫無
暫無

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

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