1

我在 git 中有以下遥控器:

origin  file:///some_path/project/ (fetch)
origin  file:///some_path/project/ (push)
release file:///some_other_path/project/ (fetch)
release file:///some_other_path/project/ (push)

我打电话给:

git push --set-upstream origin --all
git remote update

当我推到origin

git push origin

一切正常,但是当我尝试推动时release

git push release

我收到以下错误:

fatal: You are pushing to remote 'release', which is not the upstream of
your current branch 'master', without telling me what to push
to update which remote branch.

为什么?

4

2 回答 2

3

master分支有一个指示器,它是远程的origin/master。您可以通过以下方式查看git config -l

branch.master.remote=origin
branch.master.merge=refs/heads/master

这样,git push就知道它应该将您的更改推送到哪个远程分支,而无需明确指定它。

尝试在推送到release:时指定远程分支git push release master

于 2013-05-06T22:23:31.473 回答
2

你需要告诉git push你要推送哪个分支,以及它应该去哪里。

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

  • 明确地:您可以使用完整的语法明确地告诉您git push要做什么git push <repository> <refspec>。“refspec”通常采用<local branch>:<remote branch>. 因此,在您的情况下git push release master:master,会将您的本地 master 推送到“release”的 master 分支。
  • 隐式:如果你总是想将当前分支推送到远程仓库中的同名分支,你可以告诉 git。为此,请设置首选项“push.default=current”(git config --local push.default current)。然后git push release将工作,并将本地主机推送到远程主机。

至于为什么它在您的情况下不起作用:看起来您在配置中设置了“push.default=simple”(或“upstream”)。然后 git 会期望你推送到分支的上游,否则会抱怨。

于 2013-05-06T22:37:26.890 回答