git push origin branchname总是推动掌握

rie*_*ien 3 git git-push

我搜索了一下,但似乎找不到答案.

在我可以访问的两个框中,当我执行"git push --dry-run origin mytestbranch"时,我得到以下结果:

To git@bitbucket.org:rien/test.git
 * [new branch]      test -> test
Run Code Online (Sandbox Code Playgroud)

但是,在我的macbook上,当我尝试相同的命令时,我得到以下结果:

To git@bitbucket.org:rien/test.git
   417248a..cf7d564  test -> master
Run Code Online (Sandbox Code Playgroud)

只有当我明确地说推送到测试原点branch(git push --dry-run origin test:test)时它才能按预期工作.

如何更改它以便基本git push --dry-run bb test将推送到新创建的远程分支而不是主控?

我用两个盒子在盒子上创建了测试分支 git checkout -b test origin/master

编辑添加: - 两个分支都git config push.default设置为tracking.

我特别想知道如何配置git,以便在我输入时git push origin test它的行为与...相同git push origin test:test

Von*_*onC 6

检查推送策略是否存在差异:

git config push.default
Run Code Online (Sandbox Code Playgroud)

我怀疑在第一个盒子上,推动是"简单"

git config push.default simple
Run Code Online (Sandbox Code Playgroud)

还要检查第二个分支上测试分支的上游分支:

git config branch.test.merge
Run Code Online (Sandbox Code Playgroud)

在第二个分支上,可能没有定义(因此默认值为master)

可以明确设置它:

git checkout test
git branch -u origin/test
# or
git push -u origin test:test
Run Code Online (Sandbox Code Playgroud)

OP奥布莱恩增加在评论:

在注意到我为这些盒子提供了不同版本的git后,我再看了一遍,发现如果我设置push.defaultsimple或者matching为git版本1.9.3,则按git push origin test预期工作.
似乎tracking push.default这个版本的git已被弃用,所以它不理解它.