git - игнорировать файлы в зависимости от режима - PullRequest
10 голосов
/ 22 октября 2009

Я хочу игнорировать исполняемые файлы, которые не имеют расширения

Например:

gcc -o foo foo.c

Я знаю, что могу добавить 'foo' в мой файл .gitignore, но если я решу изменить имя исполняемого файла, мне нужно будет обновить мой файл .gitignore ...

Ответы [ 2 ]

9 голосов
/ 22 октября 2009

Я обычно справляюсь с этим с помощью взлома makefile. В моем Makefile у меня есть имя исполняемого файла $ (name), а затем я делаю это:

#first rule
all: gitignoreadd ... more depends
    ... some commands ...

gitignoreadd:
    grep -v "$(name)" .gitignore > temp
    echo $(name) >> temp
    mv temp .gitignore

gitignoreremove:
    grep -v "$(name)" .gitignore > temp
    mv temp .gitignore

Тогда это правило может быть зависимостью от make где-то подходящим. Тогда у вас обычно есть правило «make clean»:

clean: gitignoreremove
   rm *.o *.othergarbagefiles $(name)

Это должно сработать. Это взлом, но это работает для меня. Единственное, что вы должны запустить make clean перед тем, как изменить имя, чтобы автоматически все очистить.

8 голосов
/ 22 октября 2009

Вероятно, вам лучше вручную поддерживать gitignore. Вы могли бы сделать это:

*
!*.*

чтобы исключить все, затем включите все с ".", Но я подозреваю, что ваши каталоги не имеют расширений. Конечно, отслеживаемые в настоящее время каталоги все равно будут отслеживаться, но если вы добавите новый, git-status не увидит его, и вам придется использовать add -f, чтобы получить его.

Вероятно, не стоит полагать, что все файлы без расширения не должны отслеживаться. Вы можете в конечном итоге получить что-то естественное - например, README и INSTALL довольно распространены. Гораздо хуже случайно игнорировать файл, чем изменять gitignore тоже. Изменение gitignore может занять несколько секунд, но это будет очевидно, когда вам нужно это сделать. Если вы случайно проигнорируете файл, вы не сможете проверить его и потерять работу.

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