我正在编写一个脚本来为我推送没有标签(没有标签,没有分支,没有HEAD等)的提交。我希望它通过其哈希将其push
提交到远程存储库,以便以后可以在远程端对其调用checkout
。
如何在git中执行此操作?天真的git push REMOTE HASH
会给出类似的错误
fatal: HASH cannot be resolved to branch
我(显然)已经意识到我可以给一个虚拟标签,然后将其删除,但我希望避免这种情况。
还请注意,我不想降低性能(无论是空间/时间/网络/其他用途);我希望它具有与标记提交相同的性能。
答案 0 :(得分:2)
推送提交时,必须指定要推送到的远程引用。需要一个ref是因为默认情况下,不匹配ref的对象在许多远程协议中都是不可访问的,因此推送此类对象不是很有用。未引用的对象也会受到垃圾回收的影响,因此您在没有引用的情况下进行的任何推送(如果可能的话)都可能会被立即删除。
如果要将任意对象推送到远程引用,则可以使用以下语法将给定的提交推送到temp
分支:
git push d9f6f3b6195a0ca35642561e530798ad1469bd41:refs/heads/temp
您也可以在冒号的左侧使用任意版本。