Git修改提交記錄的順序 刪除某次提交記錄

2021-09-28 22:54:52 字數 1132 閱讀 3866

網上搜尋了很多方法,不一而足,本博文提到的方法,是我認為最容易理解的:

每一次提交記錄,都能生成對應的補丁(patch),先生成各個提交記錄的補丁,然後硬回退版本(reset --hard),然後按照期望的提交順序,順次打補丁(am).

關於補丁之間的衝突,沒有考慮(因為調整的是某個分支上的提交記錄,理論上不會有衝突的地方),有衝突風險的,不在本文討論範圍之內.

關於補丁的生成和應用,參見部落格:

如圖所示,某次開發過程中,需要調整紅框中兩次提交記錄到箭頭所示位置

生成補丁:git format-patch -n;此情景下,n的值為4;生成補丁情況,如下圖所示(補丁的序號,是從最後一次提交記錄倒序到1,即n…1)

硬回退版本(reset --hard version-num),如圖示,回退後,遠端分支未受影響,本地的head已經變更.

我們期望的提交記錄順序是:0003(smallfix),0004(版本號153),0001(…),0002(…),則按照這個補丁順序依次打補丁即可,注意補丁和提交記錄的對應關係.注:如果中途失敗,執行git am --abort

應用完最後一條補丁後效果如圖示:

這時候,是強推到遠端分支,還是刪除遠端分支後再重新push,看你的嘍.

會用補丁調整提交順序了,刪除某次提交記錄還在話下嗎?刪除某個補丁,讓後git am *.patch,會按照path的序號,順次應用所有補丁.保險起見,在生成補丁進行應用之前,將所有補丁拷貝出乙份來再進行操作.

刪除Git提交記錄

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

git刪除遠端提交記錄

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

GIT 修改GIT提交人記錄資訊

場景 公司內部有git賬號,以工號命名,個人賬號參與開源專案 提交開源專案的時候使用者名稱沒切換成個人賬戶,導致專案都是工號的提交記錄,違反了公司規定。參考 侵刪。git clone bare如 cd ant design.gitcopy以下指令碼到記事本,修改old name correct na...