【发布时间】:2018-07-03 11:28:16
【问题描述】:
我有 2 个分支(本地和远程在 github 上)。我将它们称为 BranchA 和 BranchB。 我有带有提交 c1、c2 和 c3 的 BranchA。 我只有带有提交 c1 的 BranchB。 两个分支都用 github 完全更新了,我可以检查 BranchA 有 c1、c2 和 c3,BranchB 只有 c1。
我想从本地 BranchA 推送到远程 BranchB。为此,我尝试:
git push origin refs/heads/BranchA:refs/remotes/origin/BranchB
当我这样做时,我得到一个奇怪的输出:
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/<username>/<repo>.git
<hash> BranchA -> origin/BranchB
当我去 github 时,我看到 BranchB 没有更新,仍然只有 c1。 然后,如果我再次运行该命令,它会返回所有内容都是最新的。
这让我很困惑,但是当我尝试执行命令没有完整的参考时,情况变得更糟了,就像这样:
git push origin BranchA:BranchB
...成功了。
我对此感到非常困惑。我搜索了它,我认为使用完整的 ref(例如 /refs/heads/)永远不会造成任何伤害。
为什么会这样?当我指定完整的分支名称时它不应该工作吗?
【问题讨论】:
-
出于好奇,您为什么使用完整的参考规范?
-
命令中 BranchB 的远程完整参考规范将是 refs/heads/BranchB。
-
@evolutionxbox 没有什么特别的原因,我只是想对于初学者来说,我想通过设置完整路径来尝试“不太可能失败”。我错了:)
-
@prahladvenkata 是的,似乎是这样。谢谢