簡體   English   中英

如何刪除舊的有問題的 git 提交

[英]How to remove old problematic git commits

最近我們發現了來自我們前團隊成員之一的兩個舊 git commit,這是惡意的並影響了我們的整個存儲庫。 第一次提交刪除了存儲庫中的所有文件,第二次提交將所有文件添加回存儲庫。 因此,代碼庫沒有變化,我們花了幾天時間才注意到。

提交是幾周前的,同時我們有 100 多個其他團隊成員的新提交和 10/15 不同分支之間的合並。 現在是否可以從 git repo 中完全刪除該提交?

我們想到的一種選擇是變基,但由於合並和合並沖突,我們發現這非常困難。 解決此問題的最佳行動方案是什么?

由於您提到兩次提交沒有給代碼庫帶來任何更改,因此您可以做一些簡單的事情,例如從兩次惡意提交之前的提交創建一個新分支,然后您可以從中挑選其余的歷史記錄主要分支。

假設您在main上有一個 git 歷史記錄,如下所示:

6259e6d (master) Fifth commit
d96e3a7 Fourth commit
192ec1a Third commit # malicious commit 
254d6e0 Second commit # malicious commit
ed55fff First commit

然后你可以:

# 1. Identify the commit before the first malicious commit and create a branch off it
$ git branch clean_branch ed55fff

# 2. Checkout the new branch
$ git checkout clean_branch

# 3. Cherry-pick changes from the main branch
$ git cherry-pick d96e3a7^..6259e6d

新分支 ( clean_branch ) 的 git 歷史記錄現在將不包括您要刪除的兩個提交:

$ git log --oneline
a195fe0 Fifth commit
3e52330 Fourth commit
ed55fff First commit

你現在有一個歷史清晰的分支; 您現在可以將此分支設為新的main分支

暫無
暫無

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

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