合并分支而不检查分支

时间:2011-07-21 14:24:35

标签: git merge

我有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

有没有办法在不检查每个分支的情况下下游这些更改?

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

3 个答案:

答案 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. Git checkout and merge without touching working tree

  2. Merge, update, and pull Git branches without using checkouts

  3. Merging without changing the working directory

  4. Merging Branches Without Checkout

答案 1 :(得分:6)

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

答案 2 :(得分:6)

输入 git-forward-merge

  

无需结帐目的地,git-forward-merge <source> <destination>将来源合并到目的地分支。

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