203

我有一个远程裸存储库hub。我只在master分行工作。下面这条错误消息的最后一句话让我想知道:我如何找出哪个是“当前分支的默认配置远程”?我该如何设置?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', 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.
4

5 回答 5

265

您可以更简单地做到这一点,保证您.gitconfig处于有意义的状态:

使用Git v1.8.0及以上版本

git push -u hub master推动时,或:
git branch -u hub/master

或者

(这会将当前签出分支的远程设置为hub/master
git branch --set-upstream-to hub/master

或者

(这会将名为的分支的远程设置branch_namehub/master
git branch branch_name --set-upstream-to hub/master

如果您正在使用v1.7.x或更早

你必须使用--set-upstream
git branch --set-upstream master hub/master

于 2011-01-31T10:44:00.220 回答
238

跟踪远程分支

您可以使用 git-branch 的 track 选项指定用于推送和拉取的默认远程存储库。您通常可以通过在创建本地主分支时指定 --track 选项来执行此操作,但由于它已经存在,我们将手动更新配置,如下所示:

编辑您的.git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

现在你可以简单地 git push 和 git pull。

[来源]

于 2011-01-31T02:28:23.813 回答
33

为了完整起见:前面的答案告诉了如何设置上游分支,而不是如何查看它。

有几种方法可以做到这一点:

git branch -vv显示所有分支机构的信息。(在大多数终端中以蓝色格式化)

cat .git/config这也表明了这一点。

以供参考:

于 2014-06-02T15:26:13.283 回答
0

这个问题的答案的程序版本是:

git branch --show-current -vv --format='%(upstream:remotename)'

这将只输出当前分支的默认远程名称。在 Git 版本 2.22.0 之前,该--show-current选项将不起作用。

于 2022-01-07T01:07:21.650 回答
-2

获取分支(例如 master)的有效推送远程的命令是:

git config branch.master.pushRemote || git config remote.pushDefault || git config branch.master.remote

这就是原因(来自“man git config”输出):

branch.name.remote [...] 告诉 git fetch 和 git push 从哪个远程获取/推送到 [...] [for push] 可以用remote.pushDefault(对于所有分支)[and]覆盖当前分支 [..] 被branch.name.pushRemote [...]进一步覆盖

出于某种原因,“man git push”只讲述了 branch.name.remote (即使它的优先级是三个中最小的)+ 错误地指出,如果未设置,则 push 默认为 origin - 它没有,它只是当你克隆一个 repo 时,branch.name.remote 被设置为 origin,但是如果你删除这个设置,git push 将会失败,即使你仍然有 origin 远程

于 2019-07-11T11:47:54.660 回答