我有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
有没有办法在不检查每个分支的情况下下游这些更改?
我可能使用了错误的术语。我不完全确定我是否正确使用上游/下游术语。
答案 0 :(得分:55)
你确实可以"合并"分支B进入分支A而不必检查分支A,但仅当它是快进合并。
您可以使用fetch
的refspec执行"合并"。如果使用git merge
将分支B合并到分支A中将导致快进合并,那么您可以执行以下操作而无需签出A:
git fetch <remote> B:A
以上内容与refspec格式相匹配
git fetch <remote> <source>:<destination>
来自the documentation for git fetch
(强调我的):
获取与
<src>
匹配的远程引用,如果<dst>
不是空字符串,使用 {{1}快速转发与其匹配的本地引用}。
答案 1 :(得分:6)
如果没有签出,您就无法合并到一般情况下的分支 。然而,这是有充分理由的。您需要正确的工作树才能表示和解决合并冲突。
答案 2 :(得分:6)
输入 git-forward-merge :
无需结帐目的地,
git-forward-merge <source> <destination>
将来源合并到目的地分支。