我有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
有没有一种方法可以在不检查每个分支的情况下将这些更改传递到下游?
我可能使用了错误的术语。我不确定我是否正确使用了上游/下游术语。
您确实可以将分支 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>
输入git-forward-merge:
无需签出目标,
即可将源合并到目标分支。git-forward-merge <source> <destination>
在一般情况下,您无法在没有签出分支的情况下合并到分支中。 然而,这是有充分理由的。 您需要正确的工作树来表示和解决合并冲突。