Що таке обрізка 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.