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

我知道我可以编辑.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

能够顺利推进

如果运行后出现“错误:请求的上游分支'origin/foo'不存在”:

git branch -u origin/foo

确保原点确实有一个foo分支。确保remote.origin.fetch变量设置为+refs/heads/*:refs/remotes/origin/*:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

运行git fetch-v。您应该看到git从origin/foo更新:

$ git fetch -v
From github.com:davidhcefx/test
 * [new branch]      foo             -> origin/foo
 = [up to date]      master          -> origin/master

成功后,git branch-avv将显示方括号,表示跟踪的远程分支:

$ git branch -u origin/foo
branch 'foo' set up to track 'origin/foo'.
$ git branch -avv
* foo                            92c5ada [origin/foo] Initial commit
  master                         92c5ada [origin/master] Initial commit

我使用以下命令(假设您的本地分支名称是“branch-namelocal”,而远程分支名称为“branchnameremote”):

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

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

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

为了创建新分支,我们可以使用以下命令git checkout--track-b示例原点/example对于已创建的分支,要在远程分支之间创建链接,请使用以下命令

gitbranch-u源/远程分支名称

您可以执行以下操作(假设您已在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