git checkout удаленная ветка показывает посторонние файлы? - PullRequest
1 голос
/ 18 ноября 2009

главная ветвь имеет следующие файлы и папки (упрощенно):

C:\Local\TickZoom\Project>ls
file.txt         name.txt      public

публичная ветвь отслеживает хранилище поставщиков и является поддеревом объединены в общую папку в главной ветке выше. у публики есть три только папки (упрощенно):

C:\Local\TickZoom\Project>ls
platform  providers  www

При переключении с публичного на мастер-класс он ведет себя корректно.

Однако при переключении с главного на общедоступное происходит нечто странное. Он имеет все файлы и папки обоих вместе взятых:

C:\Local\TickZoom\Project>git checkout public

C:\Local\TickZoom\Project>ls
file.txt  name.txt   public
platform  providers  www

Однако проверка состояния git говорит о том, что ничего не изменилось.

Я обнаружил, что 'git reset --hard' исправляет public.

CLUE: кажется, что это происходит только после создания нового коммита освоить. Git выполняет какое-то автоматическое слияние?

После 'git reset --hard', проверка на мастер и обратно на общественную работу нормально, даже если многократно.

Во-первых, я думал, что это было исправлено, но это произошло снова в следующий раз я внес изменения. Позвольте мне попробовать это еще раз Теперь, чтобы убедиться ...

Теперь я не могу воспроизвести это. Но это случилось дважды.

Еще один КЛЮЧ - это то, что когда я впервые сделал git reset --hard он жаловался на блокировку файлов процессами.

После того, как программы-нарушители были закрыты, git reset --hard успешно, и затем проверка работала между двумя ветвями.

Так что касса запутывается из-за блокировки файлов и "молча" потерпеть неудачу? Было бы лучше, это проблема сбой так же, как git reset --hard делает, чем просто сообщая успех и беспорядочное рабочее пространство.

Любая другая мудрость или опции, которые нужно установить на git checkout, чтобы избежать этого. будет оценено.

Wayne

Ответы [ 2 ]

6 голосов
/ 18 ноября 2009

Вы можете очистить все неотслеживаемые файлы, используя:

git clean -dfx

Убедитесь, что действительно - это не какие-нибудь неотслеживаемые файлы, которые вы хотите сохранить, прежде чем запускать эту команду!

3 голосов
/ 18 ноября 2009

используйте это, чтобы решить

git clean -f -d -X

Это удаляет только те файлы, которые игнорируются вашим .gitignore, и все пустые каталоги, которые их содержат.

Теперь я делаю это в скрипте перед извлечением веток из совершенно разных репозиториев.

Это не такая проблема при переключении ветвей между одним и тем же программным обеспечением.

Wayne

...