合并分支而不检出分支

问题描述 投票:0回答:3

我有3个分行。

     master [ Live Server]
      \
       stage [ Stage Server Where we test changes; merge commits ]
        \ 
         Dev [ Local Machine ]

我想将更改发布到下游。每个分支都设置为相互跟踪。

通常,为了下游更改,我会这样做:

git checkout stage && git merge master

然后我检查开发人员并做同样的事情

git checkout dev && git merge stage

然后将它们全部推入:

git push origin --all

有没有一种方法可以在不检查每个分支的情况下将这些更改传递到下游?

我可能使用了错误的术语。我不确定我是否正确使用了上游/下游术语。

git merge
3个回答
78
投票

您确实可以将分支 B“合并”到分支 A 中,而无需检查分支 A,但前提是它是快进合并

您可以使用带有

fetch
的 refspec 来进行“合并”。如果使用
git merge
将分支 B 合并到分支 A 会导致快进合并,那么您可以执行以下操作,而无需签出 A:

git fetch <remote> B:A

如果

<remote>
.
那么这将从本地存储库中运行。

文档

以上符合 refspec 格式

git fetch <remote> <source>:<destination>

来自

git fetch
的文档(强调我的):

获取与

<src>
匹配的远程引用,如果
<dst>
不是空字符串,使用
<src>
快进与其匹配的本地引用。

另请参阅

  1. Git 签出和合并,无需触及工作树

  2. 合并、更新和拉取 Git 分支而不使用签出

  3. 合并而不更改工作目录

  4. 无需结帐即可合并分支


18
投票

输入git-forward-merge

无需签出目标,

git-forward-merge <source> <destination>
即可将源合并到目标分支。

https://github.com/schuyler1d/git-forward-merge


6
投票

在一般情况下,您无法在没有签出分支的情况下合并到分支中。 然而,这是有充分理由的。 您需要正确的工作树来表示和解决合并冲突。

© www.soinside.com 2019 - 2024. All rights reserved.