1

我有一个带有 4 个分支的 git repo 设置:

  • 掌握
  • 开发者
  • 约翰德夫
  • 角度路由

我目前正在研究angular-routing并尝试origin/angular-routing使用简单git push的方法进行推送,但我注意到我收到以下错误:

! [rejected] johndev -> johndev (non-fast-forward)

我明白错误的含义,这很好,但我不明白为什么它首先试图推到那里。我将所有分支跟踪到似乎设置正确的相同远程分支。跑步git remote show origin给了我以下信息:

Remote branches:
  angular-routing tracked
  dev             tracked
  johndev         tracked
  master          tracked
Local branches configured for 'git pull':
  angular-routing merges with remote angular-routing
  dev             merges with remote dev
  johndev         merges with remote johndev
  master          merges with remote master
Local refs configured for 'git push':
  angular-routing pushes to angular-routing (up to date)
  dev             pushes to dev             (up to date)
  johndev         pushes to johndev         (local out of date)
  master          pushes to master          (up to date)

据我所知,它设置正确,所以我没有理由git push尝试angular-routing推动,johndev但确实如此。

我在这里做错了什么?

4

1 回答 1

2

这是因为 is 的设置push.defaultmatching这是默认设置。这意味着当您在没有指定要推送的内容的情况下进行推送时,git 将尝试推送目标上已经存在的所有分支。

听起来您想将该设置更改为upstream,这将导致默认情况下仅将当前分支推送到配置为其上游分支的远程分支。这可以通过以下方式完成:

git config --global push.default upstream
于 2013-04-11T04:53:20.453 回答