Что такое обрезка Git?

86

Я случайно обрезал некоторые удаленные ветки, и я действительно не знаю, каковы последствия этого (я нажал кнопку «Удалить удаленные ветки» в Git Extensions, думая, что это удалит удаленную ветку).

В официальной документации говорится: «git-prune - удалить все недоступные объекты из базы данных объектов». Я не совсем понимаю, что это значит. Я предполагаю, что это могло удалить объединенные ветки, но я не совсем уверен.

Дэниэл Болл
источник
Возможный дубликат stackoverflow.com/questions/4040717/…
Raghavan
1
Возможно, стоит посмотреть git gc: git-scm.com/docs/git-prune .
Ковач 06

Ответы:

91

«Удаление удаленных ветвей» в Git Extensions выполняет git remote pruneкоманду, которая удаляет локальные ветки удаленного отслеживания, где ветка больше не существует на удаленном компьютере.

Смотрите здесь: https://git-scm.com/docs/git-remote#git-remote-empruneem

1615903
источник
так что он в основном отдает приоритет вашему удаленному и настраивает локальный в соответствии с вашими удаленными ветвями?
Дорогая,
3
@ Дорогой, нет, он просто удаляет локальные ветки удаленного отслеживания , обычные ветки не трогаются.
1615903 03
32

Это просто мусор собирает ваши ветки.

Это означает, что если объект (фиксация) не может быть достигнут ни в одном из предков вашей ветки, он будет удален для базы данных git, и, как таковой, больше не будет доступен.

Это просто немного очистит репозиторий git и сделает его светлее.

синий112
источник
4
Согласно документации, для таких домашних задач, как эта, может быть лучше выполнить a, git gcа не a, git pruneкоторый, по сути, также будет выполнять git prune.
Ковач 06
1
Голос против: этот ответ (и вопрос в этом отношении) сбивает с толку git pruneи git remote prune. Это не то же самое, последний фактически очищает ветки, которые больше не существуют на удаленном компьютере, оставляя локальные ветки нетронутыми.
JBert
12

Важно знать, что чернослив подлежит репо . Не все знают, что вы можете связать локальное репо с несколькими пультами. Это удобно, когда, например, вы работаете с проектом с открытым исходным кодом, и его заставляют работать через форки.

Итак, для команды prune требуется имя репо. В большинстве случаев это так git remote prune origin, но вы можете назвать свое репо как угодно, это не обязательно origin.

Юранос
источник
2

Могут быть удаленные ветки функций, которые удаляются после того, как мы объединяем их в мастер. Возможно, мы удалили ветки функций, чтобы очистить. Но если вы проверили удаленную ветку в локальной системе и установили статус отслеживания, git pull не удалит эти локальные ветки (потому что они уже отключены от сервера). Чтобы очистить такие локальные сиротские ветки, вам git pruneпригодится команда.

Santhosh J
источник