Как вставить коммит без метки в git? - PullRequest
1 голос
/ 02 декабря 2019

Я пишу скрипт для push коммитов для меня без метки (без тегов, без ветки, без HEAD и т. Д.). Я хочу, чтобы он push дал заданный коммит по его хешу в удаленный репозиторий, чтобы позже я мог вызвать checkout для него на удаленной стороне.

Как я могу сделать это в git? Наивный git push REMOTE HASH выдает ошибку вроде

fatal: HASH cannot be resolved to branch

Я (очевидно) уже понимаю, что могу дать фиктивную метку и затем удалить ее, но я надеюсь избежать этого.

Также обратите внимание, что я не хочу снижения производительности (будь то пространство / время / сеть / другое использование);Я хочу, чтобы он имел такую ​​же производительность, как и для помеченного коммита.

1 Ответ

2 голосов
/ 02 декабря 2019

При отправке коммита вы должны указать удаленную ссылку для отправки. Ссылка необходима, потому что объекты, не соответствующие ссылке, по умолчанию недоступны для многих удаленных протоколов, и, как следствие, отправка таких объектов не будет очень полезной. Объекты, на которые нет ссылок, также подлежат сборке мусора, поэтому все, что вы нажали без ссылки (если бы это было возможно), может быть немедленно удалено.

Если вы хотите отправить произвольный объект на удаленную ссылку, выможно использовать следующий синтаксис для передачи данного коммита в ветку temp:

git push d9f6f3b6195a0ca35642561e530798ad1469bd41:refs/heads/temp

Вместо этого вы можете использовать любую произвольную ревизию в левой части двоеточия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...