如何將多個 Git 提交合併為一個


如果您是 Git 開發者,您可能遇到過混亂的提交歷史。將多個 Git 提交合併為一個(稱為壓縮的過程)可以幫助組織您的提交歷史。在本教程中,我將向您展示如何將 Git 提交合併為單個、簡潔、乾淨的提交。

為什麼要合併 Git 提交?

合併或壓縮多個 Git 提交具有多個優點
  1. 更清晰的歷史記錄:它有助於保持專案歷史記錄的整潔,將小的增量更改合併到單個提交中。
  2. 更輕鬆的協作:透過將所有相關的更改放在同一個提交下,簡化了程式碼審查。
  3. 更好的可讀性:它使跟蹤功能或錯誤修復更改更容易。

合併 Git 提交的方法

在 Git 中壓縮提交主要有兩種方法

  1. 互動式變基(合併多個最近的提交的好方法)
  2. 軟重置和重新提交(將所有提交合併為一個的理想方法)

讓我們更詳細地瞭解每種方法。

方法 1:使用 Git 互動式變基

Git 變基是一個強大的 Git 功能,允許您重新排序和壓縮提交以及其他一些操作。在本教程中,我將向您展示如何使用互動式變基來合併您最近的提交。

互動式變基 - 分步指南

1. 確定要壓縮的提交範圍:找出要合併多少個提交。假設您進行了三個提交,並且想要將它們壓縮為一個。如果您需要將最新的提交之前的三個提交進行變基,那麼您將這樣做。
2. 開始互動式變基:只需使用N(N 為要合併的提交數)執行您的命令。

git rebase -i HEAD~N

例如,如果您想壓縮最後三個提交,請鍵入:

git rebase -i HEAD~3

3. 編輯變基檔案:然後,您執行rebase命令,並開啟一個編輯器,其中列出了您的最近提交。每個提交前面都帶有單詞 pick。
4. 選擇要壓縮的提交:在所有要與最頂部提交合並的提交上,將單詞pick更改為squash(或s)。首先,在第一個提交行上保留 pick,並將其餘的更改為 squash。例如,

pick  Initial commit message
squash Second commit message
squash Third commit message

5. 儲存並關閉編輯器:編輯後,儲存並關閉編輯器。您的提交現在將在 Git 中合併。
6. 編輯合併的提交訊息:合併的提交訊息將在您的編輯器中開啟,Git 將要求您進行編輯。如果需要,您可以保留各個提交訊息,也可以編寫新的訊息。完成後,儲存並關閉編輯器。
7. 完成變基:Git 現在將選定的提交壓縮為一個。要驗證,請使用以下命令:

git log

您應該看到單個提交代替以前的提交。

方法 2:使用 Git 軟重置和重新提交。

如果您希望將所有更改壓縮到一個提交中,此方法更快。

軟重置 - 分步指南

1. 確定要包含的第一個提交:在所有提交中,確定要作為起始點的提交。假設您希望壓縮第一個提交之後的所有內容。
2. 將軟重置到目標提交:使用--soft和所需提交的雜湊值作為基準的git reset命令。

git reset --soft <commit_hash>

``替換為特定提交的雜湊值。
3. 建立新的提交:一次性暫存所有更改並提交它們。

git commit -m "Your combined commit message"

4. 驗證提交:要確保您的更改僅屬於一個提交,請執行git log

關於壓縮提交的重要說明

  • 本地分支與遠端分支:本地分支可以安全地進行壓縮。為此,您可能被迫強制推送 (git push -f),這可能會破壞協作者的工作。如果您正在處理共享分支,請務必與您的團隊協調。
  • 撤消壓縮:使用git reflog,如果意外壓縮提交,您可以將分支重置到較早的狀態。

合併拉取請求之前的壓縮提交

大多數團隊喜歡在合併拉取請求之前壓縮提交,以獲得更清晰的專案歷史記錄。在 GitHub 或其他程式碼託管站點上,您可以選擇“壓縮併合並”;它將您的拉取請求提交壓縮為一個並將其合併到主分支。

結論

將一堆提交合併為一個是非常實用的操作,可以建立乾淨易讀的提交歷史記錄。掌握git rebasegit reset允許您壓縮提交,使您的貢獻更易於跟蹤和協作。

更新於:2024年11月4日

38 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告