我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
当前回答
对于1.6.x,可以使用git_remote_branch工具完成:
grb track foo upstream
这将导致Git使foo跟踪上游/foo。
其他回答
对于像我这样只想将本地分支名称与远程分支名称同步的任何人,这里有一个方便的命令:
git branch -u origin/$(git rev-parse --abbrev-ref HEAD)
简而言之
git branch --set-upstream yourLocalBranchName origin/develop
这将使您的LocalBranchName跟踪名为develop的远程分支。
编辑.git/config可能是最简单、最快的方法。无论如何,这就是处理远程分支的Git命令所做的。
如果你不想手动处理这个文件(这并不难),你可以一直使用git-config来完成……但同样,这只会编辑.git/config文件。
当然,在使用git签出时,有一些方法可以自动跟踪远程分支(例如,通过传递--track标志),但这些命令可以处理新的分支,而不是现有的分支。
给定分支foo和远程上游:
截至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从远程上游跟踪远程分支foo。旧的(1.7.x)语法被弃用,取而代之的是新的(1.8+)语法。新语法旨在更直观、更容易记住。当对尚未获取的新创建的远程设备运行时,定义上游分支将失败。在这种情况下,请预先在上游运行gitfetch。
另请参见:为什么我需要一直做“--set upstream”?
为了避免记住每次收到信息时需要做什么:
请指定要合并的分支。参见git pull(1)详细信息。.....
可以使用以下脚本,该脚本将原点设置为当前分支的上游。
在我的例子中,我几乎从未将原点以外的其他东西设置为默认上游。此外,我几乎总是为本地和远程分支保留相同的分支名称。因此,以下内容适合我:
#!/bin/bash
# scriptname: git-branch-set-originupstream
current_branch="$(git branch | grep -oP '(?<=^\* )(.*)$')"
upstream="origin/$current_branch"
git branch -u "$upstream"