Git prune не удалял мои локальные ветки

Вы также можете попробовать этот плагин jQuery: https://github.com/morr/jquery.appear

1
задан user2012677 1 March 2019 в 19:50
поделиться

2 ответа

Его не следует удалять.

Ваши местные ветви - которые на самом деле следует просто назвать «вашими ветвями» - являются вашими . Только ваши имена для удаленного слежения , origin/* в данном случае не являются вашими. 1 Так что если origin имел ветку с именем xyzzy ранее, но не имеет более того, git fetch --prune origin или git remote prune origin удаляет ваш origin/xyzzy в соответствии с недостатком origin xyzzy.

Это не касается ваших ветвей, которые являются вашими . Если вы уверены, что они могут пойти сейчас, вам придется удалить их самостоятельно. Люди написали сценарии для этого, но сказали, что сценарии, как правило, глупы: они часто удаляют ваши xyzzy , даже если у вас есть коммиты, которые вы забыли нажать перед слиянием или намеревались перейти в другую ветку , и как только ваш xyzzy удален, часто бывает слишком поздно. Поэтому будьте осторожны с такими сценариями.

(Было бы неплохо иметь опцию для этих команд, которая говорит им: Если у меня есть локальная ветвь xyzzy, которая указывает на тот же коммит, что и origin/xyzzy, и вы удаляете origin/xyzzy удалите также мой локальный xyzzy. Более того, если у меня есть xyzzy, но origin/xyzzy не не не соответствует моему xyzzy, жаловаться и останавливаться, чтобы я мог понять, что делать с это. Но у них нет такой возможности.)


1 Технически, это тоже ваши. Просто ваш Git настроен так, что когда ваш Git вызывает свой Git - тот, что в origin - и получает от них названия веток и хеш-идентификаторы, ваш Git перезаписывает свой собственный origin/master с помощью их обновили master. Таким образом, хотя origin/master - это имя в базе данных «имя-хэш-идентификатор» вашего репозитория Git, это не то имя, которым вы обычно управляете сами. Вы просто позволяете своему Git отражать их Git, и их master становятся вашими origin/master.

Или, говоря короче: ваш мерзавец origin/master - это способ помнить своего мерзавца master. Так что это своего рода их.

0
ответ дан torek 1 March 2019 в 19:50
поделиться

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

git fetch --prune

, затем определить локальные «оставшиеся» ветви с помощью:

 git for-each-ref --format='%(if)%(upstream:short)%(then)%(else)%(color:bold red)%(end)%(refname:short)' refs/heads

(они будут выделены красным на выходе) [118 ]

или альтернативно (при условии, что ваш пульт называется origin):

git branch -vv | grep -v origin/

... и последний этап состоит в том, чтобы вручную удалить их с помощью

[113 ]

Поскольку они отображаются просто под рукой, вы не должны страдать больше, чем за пару копий / вставок. Если число устаревших ветвей регулярно огромно или, скажем, достаточно важно, то может быть что-то в рабочем процессе можно было бы внедрить, чтобы избежать повторяющейся ситуации?

0
ответ дан RomainValeri 1 March 2019 в 19:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: