为非默认远程仓库指定默认分支以进行拉取

5

我将远程源设置为当前分支的默认分支。我还有一个上游远程,它不是该分支的默认值。是否有一种方法可以配置远程的默认分支,以便在拉取时默认使用该分支?

这是我的.git/config文件:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:studgeek/knockout.git
[branch "gh-pages"]
        remote = origin
        merge = refs/heads/gh-pages
[remote "upstream"]
        url = git://github.com/SteveSanderson/knockout.git
        fetch = +refs/heads/*:refs/remotes/upstream/*
        merge = refs/heads/gh-pages

有了这个,我可以愉快地执行以下操作,并且它默认为origin/gh-pages

git pull

我想做的就是将它远程上游,让它找到分支(gh-pages)部分。
git pull upstream

与其这样,不如这样

git pull upstream gh-pages

如果我省略分支,现在会得到以下结果:

$ git pull upstream
You asked to pull from the remote 'upstream', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

我可以看到三种不同的默认方式适用于我当前的情况,但我不确定如何执行其中任何一种方法: * 只需使用当前分支作为远程上游的默认值 * 为当前分支的上游远程指示默认分支(同时将origin保留为默认分支) * 在远程上指定默认分支。当然,这里的危险是如果我切换分支,则默认的上游分支仍然保持不变。在我的情况下,这很好,但我可以看到这会烧坏那些没预料到的人。
注意,指定远程git分支提出了类似的问题,但解决方案需要做两件我们不想做的事情 - 更改默认远程或明确列出分支(我们希望将其编码以避免手动错误)。
1个回答

4
在.git/config文件中,您可以提供相关信息。例如,如果您在分支foo中,并且想要从moo远程pull代码。
[branch "foo"]
   remote = origin
   merge = refs/heads/moo

下次在foo分支中运行git pull命令时,它将从moo拉取代码。
这个问题已经在stackoverflow上有所涉及 => 如何让git始终从特定分支获取代码?

6
这并没有回答这个问题,因为这仅适用于默认远程(origin)! - Noldorin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接