使用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分別為3dd131a
、ec4a612
。使用j
、k
上下移動到pick 3dd131a
與pick 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提交,把...