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

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


当前回答

为了避免记住每次收到信息时需要做什么:

请指定要合并的分支。参见git pull(1)详细信息。.....

可以使用以下脚本,该脚本将原点设置为当前分支的上游。

在我的例子中,我几乎从未将原点以外的其他东西设置为默认上游。此外,我几乎总是为本地和远程分支保留相同的分支名称。因此,以下内容适合我:

#!/bin/bash
# scriptname: git-branch-set-originupstream
current_branch="$(git branch | grep -oP '(?<=^\* )(.*)$')"
upstream="origin/$current_branch"
git branch -u "$upstream"

其他回答

确保您运行:

git config push.default tracking

能够顺利推进

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

如果您还没有“远程”,请设置它

git remote add origin ssh://...

现在配置master以了解跟踪:

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

并推送:

git push origin master

这不是对这个问题的直接回答,但我想在这里为任何在尝试配置上游分支时可能遇到与我相同问题的人留下一条注释。

小心push.default。

对于较旧的git版本,默认值为匹配,如果您有以下情况,则会导致非常不理想的行为:

本地分支机构“主”跟踪到原点/主

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

如果您在“上游”分支上尝试“git push”,则使用push.default匹配,git将自动尝试将本地分支“master”合并为“upstream/master”,从而导致大量混乱。

这会产生更理智的行为:

git-config—全局push.default上游

简而言之

git branch --set-upstream yourLocalBranchName origin/develop

这将使您的LocalBranchName跟踪名为develop的远程分支。

这也行

git branch --set-upstream-to=/< remote>/< branch> < localbranch>