Git刪除本地任意提交記錄的方法

2021-09-25 05:03:49 字數 2069 閱讀 1164

使用git管理**版本時,有時需要刪除一些本地錯誤提交的記錄,如果待刪除記錄是最後一條或n條記錄,操作很簡單,使用如下命令即可:

# 刪除本地最後一條記錄,如果需要刪除最後提交的n條記錄,將「1」替換為乙個具體的數字「n」即可。

git reset --hard head~1

# 顯示每次修改的檔案列表及修改狀態

git log --name-status

# 顯示每次修改的檔案列表

git log --name-only

# 顯示每次修改的檔案列表及檔案修改的統計

git log --stat

# 顯示每次修改的檔案列表

git whatchanged

# 顯示每次修改的檔案列表及統計資訊

git whatchanged --stat

# 顯示最後一次的檔案改變的具體內容

git show

需要刪除圖中用藍色框標註的兩條記錄,這時該怎麼辦呢?

首先找到最後一條待刪除記錄的前一條記錄id,a8547a8beb2a11efc80a0594ebb2da21ced10439(實際處理時沒必要寫這麼長,只寫前面幾位a8547即可,具體需要的長度無法指定,確定原則就是確保記錄id能唯一標識),接下來執行如下命令:

git rebase -i a8547
會進入如下介面:

注意:1. 介面中的提交記錄是以堆疊方式顯示的,本地最後一條提交記錄顯示在最下方,最後一條待刪除記錄顯示在最上方;2. 介面是以vi開啟的,編輯方法與vi命令相同。

根據前圖中的藍框標記,待刪除記錄的id分別為3dd131aec4a612。使用jk上下移動到pick 3dd131apick ec4a612,再使用cw命令將行首的pick替換為drop(注意每完成乙個替換操作,需要按下esc鍵退出vi的編輯模式)。檢查確認後,按wq儲存並退出,接下來就等待git為我們刪除上述兩條選中的提交記錄,順利完成後的提示如下所示:

可以使用git log命令檢查確認上述兩條記錄已被刪除:

當然,也有可能會出現無法刪除某條記錄的情況,例如,刪除記錄2f18f01就會出現如下錯誤:

解決方法當然就是按照提示,要麼人工解決衝突後,使用git rebase --continue繼續變基,要麼就是使用git rebase --skip忽略問題(強烈不建議,因為極有可能無法變基成功,即使成功也會出現很大的隱患),要麼使用git rebase --abort終止變基。

git rebase -i命令還可以用來調整本地提交記錄的順序,方法很簡單,在如下介面中使用vi的操作命令修改提交記錄的順序,按wq儲存退出即可:

刪除Git提交記錄

有時候我們可能會遇到git提交錯誤的情況,比如提交了敏感的資訊或者提交了錯誤的版本。這個時候我們想將提交到 庫的記錄刪除。首先,我們需要找到我們需要回滾到的提交點的hash,可以使用 git log命令獲取提交的歷史找到需要回滾到的提交點。複製hash值,使用 git reset hard comm...

git 刪除 回退本地提交

git reset mixed 提交id 此為不帶引數執行 git reset 時的預設方式,它會將當前分支 head 指向指定提交 回退了 git commit 和 git add 操作,但本地檔案 工作區 保持不動 可以重新暫存提交或直接丟棄更改。git reset soft 提交id 它也是將...

git刪除遠端提交記錄

開發過程中,如果把本地的某乙個commit推送到遠端後,希望把遠端的該條記錄刪除。需要刪除本地commit,並同步到伺服器,使用git revert可以刪除某一次提交,並為本次刪除生成乙個新的提交。也就是說不是把之前的提交記錄抹去,在提交記錄中還是能看到之前的提交,並且有乙個新的revert提交,把...