удалить объект из git по хешу - PullRequest
0 голосов
/ 23 апреля 2020

Скажи, что я echo hello | git hash-object --stdin -w. Теперь у меня есть этот объект в рабочей области.

Я знаю, что могу go в .git/objects папку, найти объект и просто удалить его. Я также могу сделать git prune, чего я немного боюсь.

Есть ли какой-либо способ через команду git удалить один объект с помощью ha sh ?. Что-то вроде:

$ echo hello | git hash-object --stdin -w
ce013625030ba8dba906f756967f9e9ca394464a
$ git remove-object-by-hash ce013625030ba8dba906f756967f9e9ca394464a    # <- something like this

1 Ответ

2 голосов
/ 23 апреля 2020

Нет, Git не обеспечивает эту функцию. Хотя это не должно вызывать каких-либо проблем при удалении неиспользуемого объекта, определить, какие объекты используются какой-либо частью истории или повторными журналами, нетрудно, а удаление одного из этих объектов может привести к созданию вашего хранилища. быть испорченным.

Git ожидает, что вы создадите объекты, которые в итоге не будут использоваться, и они периодически очищаются git gc, если они больше не используются. Это вызывает git prune, чтобы сделать фактическую очистку, как вы заметили. Это гарантирует, что уничтожаются только неиспользуемые объекты и что хранилище остается неповрежденным после обрезки.

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