Git 中的 Cherry-Pick 合併提交
當同一個團隊的多個開發人員正在開發一個專案時,無論該專案的複雜性大小,處理和管理 Git 分支之間的更改都變得非常困難。
有時,我們需要將一些特定的提交合併到另一個分支中,而不是合併整個分支,為此,我們使用 Git 中的一個基本工具,即眾所周知的 Cherry Picking。
當從倉庫分支的整個提交列表中僅選擇一個提交時,Cherry Picking 是一個很好的工具。
Git 中的 git cherry-pick
命令
git cherry-pick
是一個有影響力的命令,它允許將隨機 Git 提交從倉庫中的一個分支移動並新增到倉庫當前工作的 HEAD
。此命令還有助於撤消與團隊過去開發相關的更改。
例如,如果我們不小心對錯誤的分支進行了提交,我們將轉移到正確的分支,並在倉庫的新分支中將提交挑選到正確的位置。
當使用 git merge
或 git rebase
時,來自一個分支的所有提交都是混合的。而 cherry-pick
命令使我們能夠選擇選定的提交進行同化。
Git 中的 Cherry-Pick 合併提交
挑選合併提交併不像看起來那麼容易。當我們執行合併過程時,我們同時使用同一個倉庫的兩個分支。
例如,使用 Git 命令將分支 parent-B
合併到 parent-A
分支中。
因此,當我們要挑選特定的提交,即與兩個父分支合併時,我們需要通過使用 -m
選項告訴 cherry-pick
命令應該使用 diff
來對抗哪個提交。我們將在以下命令中使用 commit hash
提及特定的父分支。
上述情況的語法解釋如下。
git cherry-pick -m <commit hash>
讓我們用上述命令的以下示例來解釋這種情況。
M - N - O - P - Q (branch A)
\ /
R - S - T (branch B)
如上所示,P
是合併提交。如果我們執行 git cherry-pick
命令,Git 將傳遞有關該命令的警告。
所以現在我們必須用提交 id 提及父分支號。它將在以下命令中執行。
git cherry-pick -m 1 P
這個 cherry-pick
命令將從上述示例中的 O- P
獲取所有提交。
我們還可以使用以下命令執行上述操作。
git cherry-pick -m 2 P
這將從上述示例中的 R- S- P
中選擇所有提交。
注意:使用 merge commit 命令在分支中挑選提交過於有害,因此在使用它時,請始終謹慎行事。丟失過去提交的歷史記錄的風險很高。
它破壞了我們在父節點中所做的所有更改,並且我們沒有在那個提交中定義 -m
。
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn