Git推送问题

4

我在网上找了很久也找不到这个是做什么的:

git push origin master:refs/heads/master

仅仅使用普通的方式有何不同呢?
git push origin master

感谢。
2个回答

6
在 git v1.5.5.2 版本之前,这些命令之间存在重要差异。如果目标分支不存在,则需要在 refspec 的目标侧使用完整的引用名称。(更改此行为的提交在此链接中有一个有趣的描述。)
在当前版本的 git 中,只要目标存储库中的 master 不含糊,这两种命令没有区别 - 这几乎总是符合情况,除非你故意混淆了一些东西,例如创建了名为 master 的标签。当您执行 git push origin master 命令时,git 尝试将 master 解释为一个 refspec。由于此 refspec 没有将源和目标 refs 分开的“:”符号,因此默认情况下它认为您的意思是:
git push origin master:master

…而那些不完整的引用名称将在双方展开为refs/heads/master(只要在源和目标存储库中master都是明确的)。


3

没有区别。其中一个只是另一个更冗长的版本。

master:refs/head/master 的意思是将本地的 master 推送到远程的 refs/head/master

如需了解更多详情,请查看此页面的最后一部分。


2
事实上,“git push <remote> <branch>” 的行为不受跟踪的影响 - 它总是扩展为“git push <remote> <branch>:<branch>”。 - Mark Longair

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