Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git:在本地合并远程分支_Git_Repository_Branch_Git Branch - Fatal编程技术网

Git:在本地合并远程分支

Git:在本地合并远程分支,git,repository,branch,git-branch,Git,Repository,Branch,Git Branch,我已经通过git fetch--all拉取了所有远程分支。我可以通过git branch-a将我想要合并的分支看作remotes/origin/branchname。问题是它不可访问。我无法合并或签出。每当我进行合并时,我会进入我要合并的分支(例如“git checkout branch-I-am-working-in”),然后执行以下操作: git merge origin/branch-i-want-to-merge-from您可以使用远程跟踪分支的名称引用这些远程跟踪分支(与git bra

我已经通过git fetch--all拉取了所有远程分支。我可以通过
git branch-a
将我想要合并的分支看作remotes/origin/branchname。问题是它不可访问。我无法合并或签出。

每当我进行合并时,我会进入我要合并的分支(例如“
git checkout branch-I-am-working-in
”),然后执行以下操作:


git merge origin/branch-i-want-to-merge-from

您可以使用远程跟踪分支的名称引用这些远程跟踪分支(与
git branch-r一起列出)

您需要获取远程分支:

git fetch origin aRemoteBranch
如果要合并本地分支上的其中一个远程分支:

git checkout master
git merge origin/aRemoteBranch
注1:对于历史悠久的大型回购,在使用
git fetch
时,需要添加
--depth=1
选项

注2:这些命令也适用于其他远程回购,因此,如果您使用的是fork,则可以设置
原点
上游

注3:建议使用以下别名:

aLocalBranch
,运行
git combine remoteBranch

别名:


相反的场景:如果要将本地分支之一合并到远程分支上(与远程分支合并到本地分支相反,如上所示),则需要首先在所述远程分支的顶部创建一个新的本地分支:

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch
这里的想法是将“一个本地分支”(此处为
另一个本地分支
)合并到一个远程分支(
origin/aBranch
)。
为此,您首先创建“
myBranch
”以表示该远程分支:即
git checkout-b myBranch origin/aBranch
部分 然后您可以将
另一个本地分支
合并到它(到
我的分支
)。

也许您想用本地分支跟踪远程分支:

git checkout master
git merge origin/aRemoteBranch
  • 创建新的本地分支机构:
  • 将此新创建的分支设置为跟踪远程分支:
  • 加入本分支机构:
  • 将远程分支的所有内容拉入本地分支:

  • 如果您已经获取了远程分支并执行了
    git分支-a

    您可以获得如下结果:

    * 8.0
      xxx
      remotes/origin/xxx
      remotes/origin/8.0
      remotes/origin/HEAD -> origin/8.0
      remotes/rep_mirror/8.0
    
    之后,您可以使用
    rep_mirror/8.0
    在本地指定远程分支

    诀窍在于
    remotes/rep_-mirror/8.0
    不起作用,但
    rep_-mirror/8.0
    起作用

    因此,像
    gitmerge-m“my msg”rep_mirror/8.0这样的命令执行合并


    (注意:这是对@VonC-answer的注释。我把它作为另一个答案,因为代码块不适合注释格式)

    首先从原点获取远程分支

    git fetch origin remote_branch_name
    
    将远程分支合并到本地分支

    git merge origin/remote_branch_name
    

    阿洛卡布兰奇?那是打字错误吗?我猜你是想再写一次“myBranch”?@knocte否:“如果你想把你的一个本地分支合并到一个远程分支上”:我正在将“
    aLocalBranch
    ”合并到“
    myBranch
    ”,其中“
    myBranch
    ”代表一个远程分支
    origin/aBranch
    。很抱歉打扰你@VonC,在你之前的评论中,你说
    aLocalBranch
    不是一个打字错误,但你批准了最新的编辑(2年后!),它纠正了这个“可能的打字错误”。在撤消编辑之前,我想与您核实一下。@rath您是对的:看来我可能有点匆忙地审阅了该编辑,近乎粗心大意。我确实编辑了答案来澄清第二个合并案例:你能告诉我现在是否更清楚了吗?我已经为此创建了一个别名。从
    aLocalBranch
    运行
    git combine remoteBranch
    。别名:
    combine=!git-fetch-origin${1}&&git-merge-origin/${1}
    我想你必须先做一个
    git-fetch-origin/branch-I-want-to-merge-from
    ,对吗?
    git-fetch-origin-develop
    然后是
    git-merge-origin/develop
    @Olivier你是对的,这是正确的方法
    git merge
    单靠它是不行的。谢谢你聪明的命名约定帮助了我understand@Akira是不是
    git-add.
    ->
    git-commit-m
    ->
    git-push-u-origin
    ?当接受的答案报告我们无法合并时,这对我很有效。在我的例子中,我是从GitHub上我的repo的另一个用户分支合并的。第一个命令需要fetch吗?“git merge origin/remote\u branch\u name”是否从远程分支而非本地分支读取。所以我不在乎本地分支是否更新了?@MichaelFredgeim您确实需要先获取,这样您的本地存储库才能知道远程分支的状态。Git pull基本上是从当前分支的当前远程版本获取和合并,但现在您从另一个远程版本获取和合并。
      git pull
    
    * 8.0
      xxx
      remotes/origin/xxx
      remotes/origin/8.0
      remotes/origin/HEAD -> origin/8.0
      remotes/rep_mirror/8.0
    
    git fetch origin remote_branch_name
    
    git merge origin/remote_branch_name