是否可以推送不在 git 任何分支中的提交?

epp*_*epp 6 git git-push

在本地,我可以在没有任何分支活动的情况下提交,即在签出提交但不是分支之后。是否可以将此不在任何分支中的提交推送到远程?

编辑:我只是想知道理论上 git 将如何处理推送“无分支”或只能使用分支推送。

Rom*_*eri 6

当你做

git push <remote> <source>:<destination>
Run Code Online (Sandbox Code Playgroud)

<source>可提交的,是的。

<destination>,但是,是比较麻烦一些。从文档中获取它:

可以将任何类型的对象推送到 refs/{tags,heads}/ 之外的任何命名空间。在标签和提交的情况下,为了是否允许更新,这些将被视为 refs/heads/ 中的提交

所以基本上,你主要只推送到远程分支,但是你可以推送提交,只要从他们当前的引用移动到你正在推送的引用是一个快进合并。

  • 还值得一提的是,无论您发出什么名称,当您运行 `git push &lt;hash&gt;:&lt;name&gt;` 时,都会将该名称提供给另一个 Git 来决定是否允许它。例如,GitHub 允许使用 `refs/heads/` 和 `refs/tags/` 名称,但不允许使用 `refs/pull/` 名称。其他接收者将执行不同的规则集。 (2认同)