основная ветвь имеет эти файлы и папки (упрощенно):
C:\Local\TickZoom\Project>ls
file.txt name.txt public
общедоступная ветвь отслеживает репозиторий поставщика и была объединена с поддеревом как общая папка в основной ветке выше. public имеет только три папки (упрощенно):
C:\Local\TickZoom\Project>ls
platform providers www
При переключении с паблика на мастер ведет себя корректно.
Однако при переключении с master на public происходит странная вещь. В нем объединены все файлы и папки обоих:
C:\Local\TickZoom\Project>git checkout public
C:\Local\TickZoom\Project>ls
file.txt name.txt public
platform providers www
Однако проверка статуса git говорит, что ничего не изменилось.
Я обнаружил, что 'git reset --hard' исправляет публичные ошибки.
ПОДСКАЗКА: кажется, что это происходит только после создания нового коммита на master. Выполняет ли git какое-то автоматическое слияние?
После «git reset --hard» проверка на мастер и обратно в публичный режим работает нормально, даже если неоднократно.
Сначала я думал, что это было исправлено, но в следующий раз, когда я внес изменения, это произошло снова. Позвольте мне попробовать это еще раз, чтобы убедиться...
Теперь не могу воспроизвести. Но это случилось дважды.
Еще один CLUE заключается в том, что в первый раз, когда я сделал git reset --hard, он жаловался на то, что файлы заблокированы процессами.
После того, как программы-нарушители были закрыты, команда git reset --hard завершилась успешно, и проверка прошла между двумя ветвями.
Так не запутается ли проверка из-за того, что файлы заблокированы и «тихо» не работают? Было бы лучше, если бы проблема была в том, чтобы потерпеть неудачу так же, как git reset --hard, чем просто сообщить об успехе и иметь беспорядочное рабочее пространство.
Любая другая мудрость или параметры, которые можно установить в git checkout, чтобы избежать этого, будут оценены.
Уэйн