У git есть какой-то механизм кеширования? - PullRequest
0 голосов
/ 11 октября 2019

У меня «странная» проблема с Git в Windows, и я не уверен, что что-то изменилось недавно, например, был добавлен механизм кэширования или нет.

У меня есть локальная ветвь: branch_A, и эта ветвь была удалена с удаленного компьютера. Откуда мне знать? Потому что ...

  • Я проверил Github PR, и он был объединен, и ветвь была удалена
  • Я выполнил команду git branch -r | grep branch_A, и результаты не были возвращены

По какой-то причине команда:

git checkout master && git pull origin master && git fetch -p

Не сообщает мне все ветви, которые были удалены с пульта. Другими словами, он показывает некоторые ветви, которые были удалены с удаленного компьютера, но пропускает некоторые другие, которые также были удалены.

Это приводит меня к мертвым веткам и затрудняет мне понимание того, какие ветви должныЯ постоянно обновляюсь, и мне нужно пройти всю проверку PR, была ли удалена ветка или нет, поэтому я очищаю свой локальный репозиторий.

Примечание: Я не ожидаю командуудалять любую ветку локально не имеет смысла, потому что git не знает, нужно мне это или нет (как говорит @Chris в ответе)

Версия, которую я использую в Git: git version 2.23.0.windows.1.

Кто-нибудь имеет представление о том, что здесь может быть не так? Я что-то упустил?

1 Ответ

1 голос
/ 11 октября 2019

git fetch -p покажет вам только удаленные ветви, которые были удалены и , где вы все еще получили ссылку.

git fetch -p должен показать вам, какие удаленные ветви были удалены;обеспечивая вывод, подобный следующему:

 - [deleted]         (none)     -> origin/branch_A

Это удалит ссылку origin/branch_A из вашего хранилища, но не ваша локальная ветвь branch_A.

Как вы можетесм. этот вопрос , кажется, нет простого ответа на этот вопрос. Причина в том, что git точно не знает, что вам больше не нужна ветка;возможно, он не синхронизирован с удаленной веткой, которая была удалена (и больше нет способа проверить это, поскольку ссылка исчезла).

...