git push origin branchname总是推送到主分支

4

我搜索了一些内容,但似乎找不到答案。

在我可以访问的两个盒子上,当我运行“git push --dry-run origin mytestbranch”时,我得到以下结果:

To git@bitbucket.org:rien/test.git
 * [new branch]      test -> test

然而,在我的MacBook上使用相同命令时,我得到以下结果:
To git@bitbucket.org:rien/test.git
   417248a..cf7d564  test -> master

只有当我明确指定将其推送到测试远程分支时(git push --dry-run origin test:test),它才按预期工作。
我该如何更改设置,使得基本的git push --dry-run bb test将推送到新创建的远程分支而不是主分支?
我使用git checkout -b test origin/master在两个框中创建了测试分支。
编辑以添加: - 两个分支都设置了git config push.defaulttracking
我特别想知道如何配置git,使得当我键入git push origin test时,它的行为与git push origin test:test相同。
1个回答

6

检查推送策略是否有差异:

git config push.default

我怀疑在第一个框中,push是“简单的”

git config push.default simple

请查看第二个分支上测试分支的上游分支

git config branch.test.merge

在第二个分支中,它可能没有被定义(因此默认值为master)。
可以明确设置它
git checkout test
git branch -u origin/test
# or
git push -u origin test:test

OP rien添加了评论中:

在注意到这些盒子有不同版本的git之后,我继续寻找并发现如果我将git版本1.9.3的push.default设置为simplematchinggit push origin test就会按预期工作。
看起来这个版本的git已经弃用了跟踪push.default,所以它无法理解。


对于两个框,当我输入 git config push.default 时,结果是 tracking。在第二个分支上,git config branch.test.merge 的结果是 refs/heads/master,而在第一个分支上没有任何结果。然而,当我尝试显式设置它时,我收到以下错误: error: the requested upstream branch 'origin/test' does not exist。如何更改它,以便当我使用 git checkout -b test origin/master 创建一个分支时,默认的 git push origin test 行为是 git push origin test:test - rien
只需执行 git push -u origin test:test 即可。 - VonC
我明白我可以这样做。更具体地说,我想知道如何配置git,使得git push origin test的默认行为与git push -u origin test:test相同。 - rien
在注意到这些盒子上有不同版本的git之后,我继续寻找并发现如果我将git版本1.9.3的push.default设置为simplematching,那么git push origin test就会按预期工作。看起来这个git版本已经弃用了tracking push.default,所以它无法理解它。非常感谢您的帮助。 - rien
@rien - tracking并没有被弃用,它在2.2.0版本中仍然可用,现在它是upstream的一个未记录的同义词。 - Andrew C
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接