[英]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.