我有一个git repo在使用中没有问题几年。我使用SmartGit来方便做大多数事情。
我最近注意到,当从dev分支从SmartGit进行推送时,它提供用于确认的对话框说“将当前分支'dev'推送到'master'”而不是像以前那样开发dev。
我切换到git cmd行来比较行为,发现它也想推送到master:
$ git push --dry-run
To https://github.com/some_repo.git
c00bb9e..6a8ade4 HEAD -> master
使用refspec按预期工作,但我似乎无法找到一种方法告诉SmartGit使用该refspec或它如何决定它将推动dev - >主
$ git push origin dev --dry-run
To https://github.com/some_repo.git
428dd9b..6a8ade4 dev -> dev
Git status和refs按预期显示:
$git status
On branch dev
Your branch is ahead of 'origin/dev' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
$ git symbolic-ref HEAD
refs/heads/dev
我的配置push.default被设置为'simple',这意味着当前将推送到远程同名并且如果不匹配则抱怨。
git config push.default
simple
我还重置了'upstream-to',仍然是一个普通的git push最终想要做HEAD - >主
$git branch --set-upstream-to origin/dev
Branch dev set up to track remote branch dev from origin by rebasing.
我不知道这可能是什么原因以及如何回到简单的git推送到匹配当前的分支和/或如何让SmartGit停止提供推送电流 - >主
Git版本:2.5.0
SmartGit版本:8.0.3#8135
答案 0 :(得分:3)
来自git-push(1)
:
如果命令行未指定使用
<refspec>...
参数或--all
,--mirror
,--tags
选项推送的内容,则命令会查找默认<refspec>
通过咨询remote.*.push
配置,如果找不到,请尊重push.default
配置以决定推送什么(请参阅git-config
(1)了解push.default
的含义。< / p>
听起来您将remote.dev.push
设置为HEAD
。