簡體   English   中英

Git 擴展:Squash 提交?

[英]Git Extensions: Squash commits?

為了壓縮多個提交,我一直使用:

git reset --soft HEAD~<number of commits to squash> && git commit

但是我想知道在像 git extensions 這樣的好的 git 客戶端中是否有一個很好的方法來做到這一點? 如果您可以選擇連續的提交並壓縮它們,那就太酷了。

有多種方法可以做壁球。

以下是如何在Git Extensions 中輕松地將當前及其所有直接父提交壓縮為單個提交的方法:

  1. 右鍵單擊要壓縮到的提交,然后選擇“將當前分支重置到此處”
  2. 選擇“軟重置”(保留暫存文件)或“混合重置”(取消暫存所有文件)
  3. 舞台,如有必要
  4. 提交

這是上面的動畫:

在此處輸入圖片說明


另一種方法是進行“交互式變基”

  • 通過命令行( git rebase -i閱讀文檔),或
  • 通過 UI(例如 Git 擴展)。

要在 Git 擴展中進行交互式變基:

  1. 右鍵單擊您希望壓縮到的提交,然后選擇“重新設置當前分支的基礎 > 以交互方式選擇的提交...”
  2. 在顯示的對話框中更改歷史記錄,例如選擇要壓縮或改寫的提交
  3. 保存並關閉

這是上面的動畫:

在此處輸入圖片說明

這是已接受答案的減慢版本:

這是已接受答案的減慢版本

(假設您使用的是 Windows)

是的,我相信TortoiseGit可以做到。 作為 TortoiseSVN 的前用戶,我會推薦它。 查看提交日志時,您可以執行以下操作:

組合多個提交上下文菜單

此外,當您使用 TortoiseGit 提交時,您可以選擇簡單地修改之前的提交,這樣您就可以隨時進行。 當您執行此操作時,它還會拉入最后一次提交消息(我在屏幕截圖中出於隱私原因清除了我的)。

修改最后一次提交

當然,我相信你已經知道這一點,但不要試圖合並或修改已經推送到遠程的提交,否則你的下一次推送將失敗。

作為一個額外的好處,在資源管理器中瀏覽您的工作副本時,您將獲得覆蓋圖標的好處。

資源管理器圖標

您可以通過 2 種方式使用 GitExtensions 輕松實現這一點。

第一個是做完全相同的事情,但是從 GUI 開始,當您不想使用您觀看的提交的現有提交消息來壓縮時,這是合適的。 .

 git reset --soft HEAD~<number of commits to squash>

在 GitExtensions 的歷史瀏覽器中,右鍵單擊要保留的最后一次提交並選擇'reset branch to here' 然后選擇選項'soft'

 git commit

然后提交仍處於暫存階段的更改。

第二個是 'rebase --interactive' :

右鍵單擊上述相同的提交並選擇“rebase on”。 在彈出窗口中選中“交互式”復選框。

然后,在編輯器中,將提交操作設置為“擠壓”。 在做之前閱讀關於交互式 rebase 的好文檔。 當您想根據您正在壓縮的提交的提交消息編寫良好的提交消息時,此解決方案是完美的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM