git cherry-pick 同步修改到另一个分支
我們在開發中有時會遇到,需要將另一個分支部分修改同步到當前分支。
如下圖,想把 devA 分支中 commit E 和 F,同步到下面綠色的 devB 分支中。
這時候就可以使用 git cherry-pick 來完成這項任務。
(cherry-pick 有篩選、精選的意思)
一、基本用法
轉移單個提交
git cherry-pick <commitHash> # 切換到 devB 分支 $ git checkout devB# Cherry pick 操作 $ git cherry-pick <HashE>解決沖突后,commit 即可
二、轉移多個提交
如果我有一堆連續的 commit 都想同步過去,那么可以用下面的語法:
下面的命令可以轉移從 E 到 F 的所有 commit。 注意按順序寫:提交 E 必須早于提交 F
還要注意上面命令是左閉右開的,即不包含 commit_E,如果需要兩邊都包括,用下面的語法:
git cherry-pick <HashE>^..<HashF>如果是分開的幾個 commit,可以這樣寫:
git cherry-pick <HashE> <HashG>三、參數
文檔中是這樣寫的:
usage: git cherry-pick [<options>] <commit-ish>...or: git cherry-pick <subcommand>--quit end revert or cherry-pick sequence--continue resume revert or cherry-pick sequence--abort cancel revert or cherry-pick sequence--skip skip current commit and continue--cleanup <mode> how to strip spaces and #comments from message-n, --no-commit don't automatically commit-e, --edit edit the commit message-s, --signoff add a Signed-off-by trailer-m, --mainline <parent-number>select mainline parent--rerere-autoupdate update the index with reused conflict resolution if possible--strategy <strategy>merge strategy-X, --strategy-option <option>option for merge strategy-S, --gpg-sign[=<key-id>]GPG sign commit-x append commit name--ff allow fast-forward--allow-empty preserve initially empty commits--allow-empty-messageallow commits with empty messages--keep-redundant-commitskeep redundant, empty commits提幾個會用得到的:
1)-n 如果你想轉移多個 commit 并在新分支中只想有一個 commit,那就可以添加 -n 參數,不自動提交代碼,都轉移后一次性手動提交。(注意如果有 conflict 情況就不是很好用)(為了分辨是從其他分支轉移過來的,可以新開一個分支同步這些 commit,然后再 merge 到目標分支)
2)-x 在提交信息的末尾追加一行(cherry picked from commit …),方便以后查到這個提交是如何產生的。
-x append commit name3)不建議同步「合并(merge)節點」,得到的結果應該不是你想要的(有興趣可以自己嘗試)。
四、代碼沖突
1)--continue
同步代碼不可避免遇到沖突情況,解決沖突后,將修改的文件重新加入暫存區 git add .,然后使用下面命令繼續:
2)--abort
處理過程中可能有誤操作,那么可以放棄合并,回到操作前的樣子。
(3)--quit
發生代碼沖突后,退出 cherry pick,但是不回到操作前的樣子。
總結
以上是生活随笔為你收集整理的git cherry-pick 同步修改到另一个分支的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R pdf大小_限时免费获取 Mac上P
- 下一篇: CentOS 7系统上制作Clonezi