Що таке обрізка Git?


86

Я випадково обрізав деякі віддалені гілки, і я насправді не знаю, що наслідок цього (я натиснув кнопку "Обрізати віддалені гілки" в Git Extensions, думаючи, що це видалить віддалену гілку).

В офіційній документації сказано "git-prune - обрізати всі недосяжні об'єкти з бази даних об'єктів". Я не дуже розумію, що це означає. Я припускаю, що це могло видалити об’єднані гілки, але я не дуже впевнений.


Можливий дублікат stackoverflow.com/questions/4040717/…
Раґгаван

1
Можливо, варто заглянути на git gc: git-scm.com/docs/git-prune теж.
kovac 06.03.18

Відповіді:


91

"Обрізати віддалені гілки" в Git Extensions виконує git remote pruneкоманду, яка видаляє ваші локальні гілки віддаленого відстеження там, де гілка більше не існує на пульті.

Дивіться тут: https://git-scm.com/docs/git-remote#git-remote-empruneem


отже, це в основному надає пріоритет вашому пульту дистанційного керування та налаштовує ваш локальний номер відповідно до ваших віддалених гілок?
Мед

3
@Honey ні, він просто видаляє локальні гілки віддаленого відстеження , звичайні гілки не чіпаються.
1615903

32

Це просто сміття збирає ваші гілки.

Це означає, що якщо об’єкт (коміт) не може бути досягнутий у жодному з предків вашої гілки, він буде видалений для бази даних git, і як такий більше не буде доступний.

Це лише трохи очищає сховище git і робить його легшим.


4
Згідно з документацією, для таких домашніх завдань, як це, може бути краще зробити git gcзамість того, щоб git prune, по суті, також робити Git Prune.
kovac 06.03.18

1
Голос проти: ця відповідь (і питання з цього приводу) бентежить git pruneі git remote prune. Вони не однакові, останні фактично очищають гілки, яких більше не існує на пульті, залишаючи місцеві гілки недоторканими.
JBert

12

Важливо знати, що чорнослив зв’язується репо . Не всі знають, що ви можете пов’язати локальний репо з кількома пультами дистанційного керування. Це стане в нагоді, коли, наприклад, ви працюєте з проектом з відкритим кодом і змушені працювати через форки.

Отже, команда prune вимагає імені репо. У більшості випадків це так git remote prune origin, але ви можете називати свій репо як завгодно, це не обов’язково origin.


2

Можуть бути віддалені гілки об’єктів, які видаляються після того, як ми об’єднаємо їх у головну. Можливо, ми видалили гілки функцій як спосіб очищення. Але якщо ви перевірили видалену гілку в локальній системі та встановили статус відстеження, git pull не видалить ці локальні гілки (оскільки вони вже відключені від сервера). Щоб прибрати такі місцеві відділення-сироти, git pruneкоманда стане в нагоді на допомогу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.