前言:當我們使用 Git 時,有時會遇到剛提交推送完一次修改,發現漏了該某處,只好又提交推送一次,這樣在提交記錄中就會產生冗余信息。那么有沒有方法能合並提交記錄(推送過的)呢?答案自然是有的。不過,網上的方法幾乎都是使用 Git 命令的方式來進行,各種 Rebase 什么的。由於本人平時都是直接使用 Git 圖形界面工具(推薦 GitExtensions)來執行各種 Git 操作的,所以就想着這個操作應該也能在圖形界面完成,經過實踐,形成本文。
使用工具:TortoiseGit、GitExtensions(可選)
以下是具體步驟:
1、顯示日志
在項目目錄右鍵 –TortoiseGit– 顯示日志:
2、合並提交記錄
在日志界面選中多條提交記錄,右鍵 — 壓扁成一個提交:
彈出修改提交信息界面:
修改提交信息並提交:
成功:
提交記錄已合並:
3、推送合並的提交
(可使用 TortoiseGit 直接推送,為了直觀起見,這里使用 GitExtensions)
(注意:跟着本文操作的話,此節需看完再動手)
在項目文件夾右鍵 –“GitExt Open repository” 打開 GitExtensions 主界面:
在 GitExtensions 中,可以看到,遠程倉庫還是原先的三條提交記錄,而本地倉庫已經是剛才合並過的單條提交了:
現在我們就把本地倉庫推送到遠程倉庫去,只要點擊命令欄上的紫色向上的箭頭,或者菜單欄 — 命令 — 推送,就能進行推送了:
推送界面(此處有坑):
結果(打臉了,竟然沒成功):
看來要使用殺手鐧了 —— 強制推送。
需要先重新執行前面兩節內容(如果你也掉坑的話),重新回到推送之前的狀態,也就是本地提交已合並的狀態。
然后在推送界面勾上 “強制推送”(不確定勾不勾 “替換跟蹤參考” 有沒有影響),在彈出如下提示時選否(待商榷),然后點擊推送即可。
最終結果(成功):
這樣就完成了我們合並提交記錄的目的,祝大家生活愉快!
同步首發:http://dlgcy.com/git-gui-squash/













