合并分支而不检查分支

chr*_*lee 35 git merge

我有3个分支机构.

     master [ Live Server]
      \
       stage [ Stage Server Where we test changes; merge commits ]
        \ 
         Dev [ Local Machine ]
Run Code Online (Sandbox Code Playgroud)

我想下游的变化.这些分支中的每一个都设置为相互跟踪.

通常,对于下游的更改,我这样做:

git checkout stage && git merge master

然后我结帐开发,我也这样做

git checkout dev && git merge stage

然后全部推动它们: git push origin --all

有没有办法下游这些更改而不检查每个分支?

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

小智 56

您确实可以将分支B"合并"到分支A中,而不必检查分支A,但前提是它是快进合并.

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

git fetch <remote> B:A
Run Code Online (Sandbox Code Playgroud)

文档

以上内容与refspec格式匹配

git fetch <remote> <source>:<destination>
Run Code Online (Sandbox Code Playgroud)

该文件git fetch(重点煤矿):

<src>获取匹配的远程引用,如果<dst>不是空字符串,则使用匹配快速转发与其匹配的本地引用 <src>.

也可以看看

  1. Git结帐并合并而不触及工作树

  2. 在不使用签出的情况下合并,更新和拉取Git分支

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

  4. 合并分支没有结帐

  • (对于那些不想透过其他答案挖掘的懒人):你也可以使用.代替远程操作本地分支机构. (6认同)
  • 这是一个实际的例子:`git fetch.foo:master`无论你在哪个分支,这都会将foo快速合并到master中.`.`指的是本地存储库. (2认同)

lkr*_*der 7

输入git-forward-merge:

无需签出目标,git-forward-merge <source> <destination>将源合并到目标分支.

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


Kar*_*ldt 6

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