如何在git中不带标签的情况下推送提交?

时间:2019-12-02 02:39:28

标签: git

我正在编写一个脚本来为我推送没有标签(没有标签,没有分支,没有HEAD等)的提交。我希望它通过其哈希将其push提交到远程存储库,以便以后可以在远程端对其调用checkout

如何在git中执行此操作?天真的git push REMOTE HASH会给出类似的错误

fatal: HASH cannot be resolved to branch

我(显然)已经意识到我可以给一个虚拟标签,然后将其删除,但我希望避免这种情况。

还请注意,我不想降低性能(无论是空间/时间/网络/其他用途);我希望它具有与标记提交相同的性能。

1 个答案:

答案 0 :(得分:2)

推送提交时,必须指定要推送到的远程引用。需要一个ref是因为默认情况下,不匹配ref的对象在许多远程协议中都是不可访问的,因此推送此类对象不是很有用。未引用的对象也会受到垃圾回收的影响,因此您在没有引用的情况下进行的任何推送(如果可能的话)都可能会被立即删除。

如果要将任意对象推送到远程引用,则可以使用以下语法将给定的提交推送到temp分支:

git push d9f6f3b6195a0ca35642561e530798ad1469bd41:refs/heads/temp

您也可以在冒号的左侧使用任意版本。