簡體   English   中英

Git 從第三個分支合並

[英]Git merge from a third branch

我有兩個分支, homologdevelopment

development領先於homolog ,但我想讓development成為homolog的鏡像。

如果我可以直接投入開發,我會說:

On branch development
Your branch is up to date with 'origin/development'.
$ git pull origin homolog
$ git add *
$ git commit -m "merges homolog into development"

但在我的特殊情況下,不允許我直接投入development ,因此我無法執行上述說明。

相反,我必須從development創建一個分支,從 homolog 中提取代碼,然后將它(通過pull request)推送到 development。

我試過的:

On branch development
Your branch is up to date with 'origin/development'.
$ git checkout -b my-cool-branch
Switched to a new branch 'my-cool-branch'
$ git pull origin homolog

此時我的意圖是從 homolog 獲取代碼。 但不幸的是,git 說:

Already up to date!
Merge made by the 'recursive' strategy.

根本沒有意義(因為我是菜鳥)。

我想讓發展與同系物相同

首先,這是錯誤的:

On branch development
Your branch is up to date with 'origin/development'.
$ git pull origin homolog
$ git add *
$ git commit -m "merges homolog into development"

最后的commit不會將同系物合並到開發中。 homolog 融入 development 的是一開始的pull 默認情況下, pullmerge 其他內容只是附加任何未提交的材料 — 但如果有任何未提交的材料,您可能不會被允許進行pull ,因此這幾乎毫無意義。

好吧,讓開這個:你希望git pull origin homolog會做的是將 homolog 合並到 development作為快進 如果同系物從發育中分離出來並且完全領先於發育(即根本不落后於發育),那確實會發生這種情況。

但隨后我們在這里發表您的聲明:

我必須從開發中創建一個分支,從 homolog 中提取代碼,然后將其(通過拉取請求)推送到開發中。

好吧,如果那條規則真的是這樣的話,那么你想做的事情是不可能的。 原因是拉取請求不過是在服務器端進行的曠日持久的合並。 但是任何形式的拉取請求都不允許您在服務器端進行快進合並。 您可以獲得的最接近的是“rebase and merge”:

https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges#rebase-and-merge-your-pull-request-commits

那顆櫻桃從同系物中挑選提交到開發中。 但它們不是相同的提交; 他們是副本。 所以發展和同系物不會“相同”。 不過,它們應該產生完全相同的外觀:也就是說,在這樣的拉取請求合並之后,檢查開發和檢查同系物會在工作樹中產生相同的結果,這似乎是你所追求的大部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM