我知道如何创建一个跟踪远程分支的新分支,但是如何使现有分支跟踪远程分支?
我知道可以编辑.git/config
文件,但似乎应该有更简单的方法。
我知道如何创建一个跟踪远程分支的新分支,但是如何使现有分支跟踪远程分支?
我知道可以编辑.git/config
文件,但似乎应该有更简单的方法。
假设有一个分支 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 开始(在 1.8.0 之前):
git branch --set-upstream foo upstream/foo
注:
foo
跟踪远程 upstream
的分支 foo
。git fetch upstream
。git branch --set-upstream master origin/master
相当于在最初克隆存储库时自动执行的操作。 - Dan Mouldinggit push -u origin foo
的翻译是将本地分支 foo
推送到远程仓库 origin
,并将本地分支设置为远程分支的上游。 - Cottongit remote add origin ssh://...
现在配置主节点以知道如何进行跟踪:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
同时进行推送:
git push origin master
error: the requested upstream branch 'upstream/master' does not exist
。 - Steve Korigin
而不是 upstream
。 - umläute[branch "master"]
remote = origin
merge = refs/heads/master
- jhyry-gcpud-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 --set-upstream-to=origin/foo
针对 Git 1.8.0 及以上版本:
实际上,要使得已接受的答案起作用:
git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR Git version 1.8.0 and higher:
git branch --set-upstream-to=upstream/qa
# Gitversions lower than 1.8.0
git branch --set-upstream qa upstream/qa
你可能会发现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
我相信在 Git 1.5.x 中,您可以使本地分支 $BRANCH
跟踪远程分支 origin/$BRANCH
,如下所示。
假设 $BRANCH
和 origin/$BRANCH
存在,并且您当前没有检出 $BRANCH
(如果您已经检出,请切换到其他分支),则执行以下操作:
git branch -f --track $BRANCH origin/$BRANCH
这会重新创建一个跟踪分支$BRANCH
。使用-f
选项,即使$BRANCH
已存在也强制创建。如果通常的默认设置已经生效(如branch.autosetupmerge
配置参数为true),那么--track
是可选的。
请注意,如果origin/$BRANCH
不存在,您可以通过将本地的$BRANCH
推送到远程存储库来创建它:
git push origin $BRANCH
在上一条命令之后,将本地分支升级为追踪分支。
git branch -f --track $BRANCH origin/$BRANCH
就可以解决问题。 - DemitryT确保你运行了:
git config push.default tracking
能够无障碍地推动
git-config(1)
手册页面,tracking
已被弃用,其同义词为 upstream
。 - FooFgit checkout -b mybranch origin/master
,当您运行 git push
时,会将更改推送到远程的 master 分支。对大多数人来说,这可能是意料之外的。 - Tao编辑.git/config
可能是最简单和最快的方法,这就是处理远程分支的Git命令所做的事情。
如果您不想手动操作该文件(而且这并不难),您可以始终使用git config
来完成操作...但再次提醒,那只是编辑.git/config
文件。
当使用git checkout
时,当然有自动跟踪远程分支的方式(例如通过传递--track
标志),但这些命令仅适用于新建分支,而不适用于现有的分支。
简单来说
git branch --set-upstream yourLocalBranchName origin/develop
这将使你的yourLocalBranchName
跟踪名为develop
的远程分支。
--set-upstream
和--track
有什么区别?我不太明白为什么我应该使用其中之一。 - Asclepius
git push -u origin 分支名称
。该命令可以将本地分支推送到远程仓库,并将其设置为默认上游分支。 - Zagsgit pull
命令通常会提供有关设置跟踪信息的适当命令的帮助信息。 - billrichardsgit branch --set-upstream-to origin/<branch>
。 - Mahdi Javaheri--set-upstream
产生错误:fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
因此,目前有效的命令是git branch --set-upstream-to origin/<branch name>
。请注意,该命令不再支持--set-upstream
选项,而应改用--track
或--set-upstream-to
选项。 - Super Jade