当前位置:  开发笔记 > 后端 > 正文

让现有的Git分支跟踪一个远程分支?

如何解决《让现有的Git分支跟踪一个远程分支?》经验,为你挑选了16个好方法。

我知道如何创建一个跟踪远程分支的新分支,但是如何使现有分支跟踪远程分支?

我知道我可以编辑.git/config文件,但似乎应该有一个更简单的方法.



1> Dan Moulding..:

给定分支foo和远程upstream:

从Git 1.8.0开始:

git branch -u upstream/foo

或者,如果本地分支foo不是当前分支:

git branch -u upstream/foo foo

或者,如果您想键入更长的命令,这些命令等同于以上两个:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

从Git 1.7.0开始:

git branch --set-upstream foo upstream/foo

笔记:

所有上述命令都将导致本地foo分支foo从远程跟踪远程分支upstream.

不推荐使用旧的(1.7.x)语法,而采用新的(1.8+)语法.新语法旨在更直观,更易于记忆.

使用尚未获取的新创建的遥控器定义上游将失败.在那种情况下git fetch upstream预先运行.


另请参阅:为什么我需要始终执行`--set-upstream`?


@Andrew:是的.`git branch --set-upstream master origin/master`等同于最初克隆存储库时自动完成的操作.
"上游"是遥控器的名称吗?即大多数人默认称之为"起源"?
`git push -u origin foo` [via](http://stackoverflow.com/questions/6089294/git-why-do-i-need-to-do-set-upstream-all-the-time/6089415# 6089415)
在相关的说明中,将此添加到您的gitconfig是非常棒的:"[push] default = tracking"这将使得推送将从拉出来的同一个地方:)
我得到"致命:不是有效的对象名称:'origin/master'."
我使用Git 1.8.1.2它给了我:` - set-upstream标志已被弃用,将被删除.考虑使用--track或--set-upstream-to`
joachim:你有一个名为"origin"的遥控器,里面有一个分支"master"吗?`git branch -r`将显示你的远程分支.
joachim:我得到了同样的错误.在我的情况下,我正在更改远程源服务器,所以我重命名了远程服务器.然后没有更多的origin/master远程分支,所以我需要这样做:git fetch origin git branch --set-upstream master origin/master git pull
同样在最近的`git`中,如果你已经获取了新的远程分支并且没有本地分支,那么具有相同branchname的`git checkout`将自动创建一个跟踪分支
万一有人不知道:"git branch -a -v"显示你有哪些分支,"git remote -v"显示你有什么遥控器.
这在git 2.8.1中无法正常工作.它尝试创建一个名为upstream/foo的本地分支,即使上游是远程仓库也是如此.

2> Paul Hedderl..:

您可以执行以下操作(假设您已在主服务器上签出并希望推送到远程分支主服务器):

如果您还没有设置'遥控',请设置它

git remote add origin ssh://...

现在配置master来知道跟踪:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

并推:

git push origin master


是的 - 但是从内存中你可能需要明确第一次推送.当然可以轻松测试...... :)
@SteveK最有可能的原因是你的上游叫做`origin`而不是`upstream`.
这是唯一对我有用的答案.当我尝试接受的答案时,为现有分支设置上游远程,我得到:`错误:请求的上游分支'upstream/master'不存在.

3> Greg Bacon..:

我这样做是为了推动使用-u选项的副作用

$ git push -u origin branch-name

相当长的选项是--set-upstream.

git-branch命令也理解--set-upstream,但它的使用可能会令人困惑.版本1.8.0修改了界面.

git branch --set-upstream已被弃用,可能会在相对较远的将来被删除. git branch [-u|--set-upstream-to]已经引入了一个更健全的论点.

...

这很诱人git branch --set-upstream origin/master,但这告诉Git安排本地分支"origin/master"与当前签出的分支集成,这是用户意味着的极不可能.该选项已弃用; 使用新的--set-upstream-to(带有短而甜-u)选项.

假设您有一个本地foo分支,并希望它以与其上游相同的名称处理分支.用这个来实现

$ git branch foo
$ git branch --set-upstream-to=origin/foo

要不就

$ git branch --set-upstream-to=origin/foo foo



4> James Mead..:

您可能会发现该git_remote_branch工具很有用.它提供了用于创建,发布,删除,跟踪和重命名远程分支的简单命令.一个很好的功能是你可以请求一个grb命令来解释它将执行什么git命令.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch


OP正在询问有关Git本身的问题.所以不介绍新工具可能会更好.
是`grb`标准命令?可用哪个套餐?
grb是一个ruby gem,可以按照[他们的github](https://github.com/webmat/git_remote_branch)中的解释访问

5> Hedgehog..:

实际上,对于已接受的工作答案:

git remote add upstream 
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa



6> 小智..:

我相信,早在Git 1.5.x你可以让本地分支$BRANCH跟踪一个远程分支origin/$BRANCH,就像这样.

鉴于$BRANCH并且origin/$BRANCH存在,并且您当前没有签出$BRANCH(如果有,请切换),执行:

git branch -f --track $BRANCH origin/$BRANCH

这将重新创建$BRANCH为跟踪分支.-f尽管$BRANCH已经存在,但创造的力量.--track如果通常的默认值就位(即git-config参数branch.autosetupmerge为true),则是可选的.

请注意,如果origin/$BRANCH尚不存在,您可以通过将本地推$BRANCH送到远程存储库来创建它:

git push origin $BRANCH

接下来是上一个命令,将本地分支推进到跟踪分支.



7> Monsif EL AI..:

1-使用以下命令更新本地元数据:git fetch --all

在此输入图像描述

2-使用:git branch -a显示您的远程和本地分支 ,请参阅以下屏幕截图

在此输入图像描述

3-切换到目标分支,即要与远程链接:使用

git checkout branchName

例如:

在此输入图像描述

4-使用以下方法将本地分支链接到远程分支:

git branch --set-upstream-to nameOfRemoteBranch

注意:nameOfRemoteBranch:从步骤2"git branch -r"的输出中复制

使用示例:

在此输入图像描述



8> romanlv..:

确保你运行:

git config push.default tracking

能够推动无故障



9> mipadi..:

编辑.git/config可能是最简单,最快捷的方式.无论如何,这就是用于处理远程分支的Git命令正在做的事情.

如果您不想手工处理文件(并且这并不难),您可以随时使用git config它......但是.git/config,无论如何,这只是编辑文件.

当然,有一些方法可以在使用时自动跟踪远程分支git checkout(--track例如,通过传递标志),但这些命令适用于分支,而不是现有分支.



10> MadNik..:

很短的

git branch --set-upstream yourLocalBranchName origin/develop

这将使您的yourLocalBranchName跟踪调用远程分支develop.



11> wik..:

对于1.6.x,可以使用git_remote_branch工具完成:

grb track foo upstream

这将导致Git进行foo跟踪upstream/foo.



12> yrazlik..:

我使用以下命令(假设您的本地分支名称是"branch-name-local",远程分支名称是"branch-name-remote"):

$ git branch --set-upstream-to=origin/branch-name-remote branch-name-local

如果本地和远程分支具有相同的名称,则只需执行以下操作:

$ git branch --set-upstream-to=origin/branch-name branch-name



13> Dr Beco..:

在这里,使用githubgit version 2.1.4,只是做:

$ git clone git@github.com:user/repo.git

而且遥控器来自itelsef,即使没有在本地链接:

$ git remote show origin

* remote origin
  Fetch URL: git@github.com:user/repo.git
  Push  URL: git@github.com:user/repo.git
  HEAD branch: master
  Remote branches:
    develop tracked         <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    master  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

但当然,仍然没有本地分支:

$ git branch
* master                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

看到?现在,如果您只是结帐develp,它将自动执行魔术:

$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'

太简单!


摘要.只需运行以下两个命令:

$ git clone git@github.com:user/repo.git
$ git checkout develop



14> Loukan ElKad..:

使用'--track'选项

之后git pull:

git checkout --track

要么:

git fetch && git checkout



15> jithu reddy..:

要创建新分支,我们可以使用以下命令

 git checkout --track -b example origin/example 
对于已经创建的分支来创建远程之间的链接然后从该分支使用下面的命令

 git branch -u origin/remote-branch-name



16> Tom Mettam..:

这不是此问题的直接答案,但我想在这里给任何人在尝试配置上游分支机构时可能遇到与我相同的问题做个说明。

注意push.default

在较旧的git版本中,默认设置为match,如果您使用git,则会导致非常不理想的行为,例如:

本地分支“母版”跟踪到原始/母版

远程分支“上游”跟踪到上游/主服务器

如果您在“上游”分支上尝试“ git push”,则使用push.default匹配的 git会自动尝试将本地分支“ master”合并到“ upstream / master”,从而造成很多混乱。

这会提供更多理智的行为:

git config --global push.default上游

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有