我有一个带有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
,但确实如此。
我在这里做错了什么?
答案 0 :(得分:2)
这种情况正在发生,因为push.default
的设置为matching
,这是默认设置。这意味着当你在没有指定推送内容的情况下执行推送时,git将尝试推送目标上已存在的所有分支。
听起来您想要将该设置更改为upstream
,这会导致默认情况下仅将当前分支推送到配置为其上游分支的远程分支。这可以通过以下方式完成:
git config --global push.default upstream