本文繼續我們的“高級git”系列。在Twitter上關注我們,或訂閱我們的新聞通訊以獲取有關未來文章的最新信息!
在上一期中,我們探討了重新審查和合併。儘管巧妙不同,但git merge
和git rebase
都具有相同的基本目的:將一個分支的變化整合到另一個分支。
本文重點介紹了git cherry-pick
,這是一個強大的命令,可以選擇將任何分支的個人提交的選擇性集成到您當前的頭部。這與git merge
和git rebase
形成鮮明對比,後者結合了來自源分支的所有新提交。
為什麼選擇性地應用單個提交?關鍵用例是糾正錯誤。想像一下意外地致力於錯誤的分支。 cherry-pick
簡化了修復程序:切換到正確的分支,然後將錯誤提交櫻桃挑選。
注意:避免過度依賴cherry-pick
。通常優選由git merge
和git rebase
促進的分支級工作流程。 cherry-pick
是特定情況下的寶貴工具,而不是替代標準合併或重新打擊的替代品。
考慮到這種情況:針對feature/newsletter
分支機構錯誤地降落在master
中的一項承諾。以下塔式屏幕截圖(用於MacOS和Windows的GIT GUI)說明了這一點,突出顯示了將26bf1b48
錯誤放置在master
中:
另外,命令行揭示了問題:
$ git日誌 提交26BF1B4808BA9783E4FABB19EC81E7A4C8160194(負責人 - > Master) 作者:TobiasGünther 日期:週五10月5日09:58:03 2018 0200 新聞通訊註冊頁
提交26bf1b48
屬於feature/newsletter
。讓我們用cherry-pick
來移動它:
$ git Checkout功能/新聞通訊 切換到分支“功能/新聞通訊” $ git狀態 關於分支功能/新聞通訊 沒什麼可承諾的,工作樹很乾淨 $ git櫻桃袋26BF1B48 [功能/新聞通訊7FB55D0]新聞通訊註冊頁面 作者:TobiasGünther 日期:週五10月5日09:58:03 2018 0200 1個文件更改,0插入(),0刪除( - ) 創建模式100644 Inbimup.html
git log
現在顯示feature/newsletter
中的提交:
$ git日誌 提交7FB55D06A8E70FDCE46921A8A3D3A9DE7F7FB8D7(頭 - >功能/新聞通訊) 作者:TobiasGünther 日期:週五10月5日09:58:03 2018 0200 新聞通訊註冊頁
注意: cherry-pick
創建了該提交的副本,使原始完整。
“不正確”提交仍然存在於master
中。 git reset
將其刪除:
$ git Checkout Master 切換到分支“主” $ git重置 - hard頭〜1 Head現在在776F8CA上更改標題和刪除錯誤頁面
GUI塔可視化整個過程。
盡可能優先merge
或rebase
。保留cherry-pick
不適合的情況,特別適用於移動個人提交的情況。請記住, git cherry-pick
重複作品;之後始終清理。
探索我免費的“高級GIT套件”,以深入研究GIT工具,包括分支策略,互動式折疊,逆轉錄子和子模型。
挑剔的櫻桃快樂,並在下一個“高級git”期間見到您!
以上是櫻桃挑選git的詳細內容。更多資訊請關注PHP中文網其他相關文章!