Git: использование .gitignore с разными ветками - PullRequest
1 голос
/ 19 мая 2011

У меня довольно простое рабочее окружение, но я не могу работать с Git по желанию.

Вот как мы можем описать это: две ветви A и B с двумя файлами в каждом в своих рабочих деревьях, первый файл toMerge, а второй toKeepSpecific.

У меня есть один и тот же .gitignore в двух ветвях, говорящий об игнорировании файла toKeepSpecific. Файл toKeepSpecific никогда не передавался, поэтому в удаленном хранилище две ветви содержат только toMerge.

Проблема, с которой я столкнулся, заключается в том, что, когда я нахожусь в ветви B и пытаюсь извлечь ветку A, у меня появляется следующее сообщение: «Следующий неотслеживаемый файл рабочего дерева будет перезаписан checkout». Я думал, что .gitignore позаботится об этом, но, видимо, нет ...

Какая среда Git наиболее подходит для таких нужд?

Спасибо!

1 Ответ

2 голосов
/ 19 мая 2011

git ignore указывает git не отслеживать содержимое файлов по определенным именам .

Редактировать Это предотвращает только то, что git показывает файлы как неотслеживаемые или автоматически отслеживает их после git add. Это не относится к файлам, которые в данный момент отслеживаются . Вы должны удалить их вручную из ветки, где вы хотели, чтобы они были проигнорированы.

IOW: git ignore не влияет на существующие ревизии. Отслеживаемые файлы продолжают отслеживаться, пока вы не удалите их


Независимо от этого, никогда не будет нормально перезаписывать локальные файлы без предупреждения, даже если они (в настоящее время) не отслеживаются. Конечно, это точно для предотвращения потери данных при переключении ветвей.

Многие команды git принимают опцию --force-, чтобы все равно идти вперед, поэтому, если вы знаете, что делаете, непременно используйте это.

Если вы используете рабочий процесс git, который не позволяет вам использовать опции --force, то я предлагаю вам использовать команду git clean -x для очистки неотслеживаемых (то есть игнорируемых) файлов перед выполнением переключения ветви

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...