Git игнорировать определенные файлы - PullRequest
21 голосов
/ 08 апреля 2011

Я давно с этим играюсь, и мне это очень нравится.Позвольте мне описать мой случай.

У меня есть два компьютера, на которых у меня есть свои репозитории и удаленное хранилище.

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

Я читал о файлах .gitignore, но не могу понять, как они работают, или это то, что мне нужно в моем случае.

Ответы [ 5 ]

33 голосов
/ 08 апреля 2011

.gitignore для файлов / папок, которые вы еще не зарегистрировали .По сути, это текстовый файл, который вы создаете в репозитории, и содержит список путей относительно каталога, в который он был помещен, который Git будет игнорировать.Вы можете зарегистрировать файл .gitignore как часть репозитория.Вы можете найти примеры - в конце этой страницы

Однако , если ваш файл уже был проверен в хранилище, тогда вы можете использовать:

git update-index --assume-unchanged file

, который скажет Git игнорировать любые изменения в этом файле, сделанные в будущем.Однако это локальная конфигурация, поэтому вам придется делать это на каждой проверяемой машине.Вы можете отменить его, выполнив:

git update-index --no-assume-unchanged file

В зависимости от конфигурации, содержащейся в этом файле, может быть полезно иметь в хранилище конфигурационный файл-скелет / пример - аналогично тому, что делают ребята из PHP с config_example.php, который затем используется людьми для создания config.php, который, в свою очередь, никогда не проверяется в хранилище, потому что он игнорируется.

6 голосов
/ 08 апреля 2011

Если вы хотите игнорировать файл config.local в своем хранилище, вы просто создаете файл .gitignore со строкой /config.local, добавляете его и фиксируете в хранилище.Вот и все.

1 голос
/ 08 апреля 2011

Может быть, пример поможет.Вот часть моего .gitignore файла, который также является частью файлов проекта:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
*.pro.user.*
tmp/
release/
debug/
bin/
moc_*
ui_*
*.bck
*_debug

#Visual Studio stuff
lib/*.lib
*.ncb
*.suo

Это только часть файла.Вам нужно будет настроить свой в зависимости от вашего проекта.

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

1 голос
/ 08 апреля 2011

Файл .gitignore может быть тем, что вам нужно. В этом файле вы перечисляете шаблоны файлов - по одному на строку - что приведет к тому, что git status не сообщит об этих файлах.

Но если вы уже зафиксировали эти файлы, они будут извлечены, когда вы выполните git pull.

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

0 голосов
/ 05 июня 2017

Обратите внимание, что

git update-index --assume-unchanged file

не поможет, если вы попытаетесь переключить филиал

$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
    file
Please commit your changes or stash them before you switch branches.
Aborting
...