亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何選擇一系列提交并合并到另一個分支?

如何選擇一系列提交并合并到另一個分支?

Git
飲歌長嘯 2019-06-05 14:44:39
如何選擇一系列提交并合并到另一個分支?我有以下存儲庫布局:總支部(生產)整合工作我想要實現的是從工作分支中選擇一系列提交,并將其合并到集成分支中。我對git非常陌生,我不知道如何做到這一點(在一個操作中選擇提交范圍,而不是合并),而不是在不破壞存儲庫的情況下。對此有什么建議或想法嗎?謝謝!
查看完整描述

3 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

A?rebase --onto如果在集成分支的頂部重放給定的提交范圍,將更好,如查爾斯·貝利.

(此外,請查找“這里是如何基于一個分支將主題分支移植到另一個分支”的git重基手冊頁的實際例子git rebase --onto)

如果您當前的分支是集成的,那么:

#?Checkout?a?new?temporary?branch?at?the?current?locationgit?checkout?-b?tmp#?Move?the?integration?branch?to?the?head?of?the?new?patchsetgit
?branch?-f?integration?last_SHA-1_of_working_branch_range#?Rebase?the?patchset?onto?tmp,?the?old?location?of?integrationgit?rebase?--onto?
?tmp?first_SHA-1_of_working_branch_range~1?integration

它將在以下幾個方面重播所有內容:

  • 在父母之后

    first_SHA-1_of_working_branch_range

    (因此

    ~1

    ):你想要重播的第一次提交
  • 直至“

    integration

    “(指向要重播的最后一次提交,從

    working

    支部)

致“tmp“(指的是integration指過去)

如果其中一次提交被重播時有任何沖突:

  • 要么解決它,然后運行“

    git rebase --continue".

  • 或者跳過此修補程序,而是運行“

    git rebase --skip"

  • 或者用“

    git rebase --abort

    “(然后放回

    integration

    支線

    tmp

    支部)

在那之后rebase --onto,?integration將返回到集成分支的最后一次提交(即“tmp“分支+所有重放提交)

摘櫻桃或者rebase --onto,不要忘記它對隨后的合并有影響,如在此描述.


純“cherry-pick“并涉及以下內容:

如果您想使用修補程序的方法,那么“git格式-修補程序\git是”和“git櫻桃”是您的選擇。
目前,git cherry-pick只接受一次提交,但如果要選擇范圍B貫通D那就是B^..D用吉特林戈語,所以

git?rev-list?--reverse?--topo-order?B^..D?|?while?read?rev?
do?
??git?cherry-pick?$rev?||?break?done

但是無論如何,當您需要“重放”一系列提交時,“重播”一詞應該促使您使用rebase“Git的特征。


查看完整回答
反對 回復 2019-06-05
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

從git v1.7.2櫻桃采摘可以接受一系列提交:

git cherry-pick學會選擇一系列的提交(例如:cherry-pick A..Bcherry-pick --stdin),也是git revert這些不支持更好的測序控制。rebase [-i]盡管如此。


查看完整回答
反對 回復 2019-06-05
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

你確定你不想真正合并這些分支嗎?如果工作分支有一些您不想要的最近提交,您可以創建一個新的分支,在您想要的點上有一個頭。

現在,如果您確實想要選擇一系列提交,不管出于什么原因,一個優雅的方法就是只需拉動一個修補程序集并將其應用于您的新集成分支:

git format-patch A..B
git checkout integration
git am *.patch

這基本上就是git-rebase到底在做什么,但不需要玩游戲。你可以添加--3waygit-am如果你需要合并的話。請確保在執行此操作的目錄中已經沒有其他*.修補程序文件,如果您按照說明逐字操作.


查看完整回答
反對 回復 2019-06-05
  • 3 回答
  • 0 關注
  • 972 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號