Как можно настроить git на игнорирование файлов? - PullRequest
4 голосов
/ 27 ноября 2011

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

У нас есть сторонняя библиотека C, которая распакована, и у нас она есть в Git. Но когда вы configure && make это, он производит много новых файлов. Как написать .gitignore, чтобы отслеживать исходные файлы, а не новые вещи. (это не похоже на запрет *.o)

Редактировать : существует не менее 12 типов файлов. Поэтому мы не хотели бы перечислять, какой тип мы хотим, а какой нет.

Ответы [ 4 ]

6 голосов
/ 27 ноября 2011

Используйте !, чтобы включить все типы файлов, которые вам нужны. Примерно как в следующем примере "

*
!*.c
!*.h
3 голосов
/ 27 ноября 2011

Явное указание, какие файлы следует отслеживать, и игнорирование всех остальных может быть решением. * говорит игнорировать все , а в последующих строках указываются файлы и каталоги, которые не следует игнорировать. Подстановочные знаки разрешены.

*
!filename
!*.extension
!directory/
!/file_in_root_directory
!/directory_in_root_directory

Помните, что порядок имеет значение. Помещение * в конце делает все предыдущие строки неэффективными.

Взгляните на man gitignore (5) и найдите !. Это говорит

Шаблоны имеют следующий формат:

  • (...)

  • Дополнительный префикс ! , который отменяет шаблон; любой соответствующий файл, исключенный предыдущим шаблоном, снова будет включен Если шаблон с отрицанием соответствует, это переопределит источники шаблонов с более низким приоритетом.

0 голосов
/ 27 ноября 2011

Я бы позаботился о том, чтобы репо было чистым (без изменений, без неотслеживаемых файлов), запустил configure && make и затем поместил вновь неотслеживаемый файл в файл игнорирования. Что-то вроде git status --porcelain | fgrep '??' | cut -c4- вытащит их автоматически, но для того, чтобы убедиться, что это правильно, стоило бы потратить некоторое время на глаз ...

0 голосов
/ 27 ноября 2011

Я не уверен, почему вы говорите "это не похоже на запрет *.o", но я думаю, что вы имеете в виду, что нет каких-либо хороших шаблонов, которые можно идентифицировать, которые применимы к сгенерированным файлам, но не к исходным файлам?Если появляются только несколько вещей (например, отдельные встроенные исполняемые файлы, которые часто не имеют каких-либо расширений в Linux), вы можете явно назвать их в .gitignore, чтобы они не были проблемой.

Еслив действительности в процессе сборки генерируется множество файлов, которые совместно используют расширения и другие шаблоны с исходными файлами, а затем просто используют шаблоны, включающие ваши исходные файлы.Вы можете даже поставить * в .gitignore, если это действительно так плохо.Это будет означать, что новые файлы не отображаются при вводе git status или добавляются при использовании git add ., но это не вредит файлам, которые уже добавлены в хранилище;git все равно расскажет вам об изменениях в них и подберет их, когда вы используете git add ..Это просто возлагает на вас бремя явного запуска отслеживания файлов, которые вас волнуют.

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