Git игнорировать определенные файлы
Я играл с ним некоторое время, и мне это очень нравится.
Позвольте мне описать мой случай.
У меня есть два компьютера, где у меня есть мои репозитории и удаленный репозиторий.
В моих файлах у меня есть один файл конфигурации, который отличается на обоих компьютерах. поэтому, когда я нажимаю на свои компьютеры, мне не нужен этот файл конфигурации, который нужно потянуть, но все остальное. Как я могу это достичь?
Я читал о файлах .gitignore, но я не могу понять, как они работают, или это то, что мне нужно в моем случае.
Ответы
Ответ 1
.gitignore предназначен для файлов/папок, которые вы еще не отметили. Это по существу текстовый файл, который вы создаете в репозитории, и имеет список путей относительно каталога, в который он был помещен, который будет Git игнорироваться. Вы можете зарегистрировать файл .gitignore как часть репозитория. вы можете найти примеры - в конце этой страницы
Однако , если ваш файл уже был установлен в в репозитории, вы можете использовать:
git update-index --assume-unchanged file
который сообщит Git игнорировать любые изменения в этом файле, сделанные в будущем. Однако это локальная конфигурация, поэтому вам придется делать это на каждой машине, которую вы проверяете. Вы можете вернуть его, выполнив:
git update-index --no-assume-unchanged file
В зависимости от того, какая конфигурация содержит этот файл, может быть хорошей практикой иметь файл конфигурации скелета/примера в репозитории - аналогично тому, что делают ребята PHP с помощью config_example.php, который затем используется людьми для создания config.php, которые, в свою очередь, никогда не проверяются в репозитории, потому что они игнорируются.
Ответ 2
Если вы хотите игнорировать файл config.local
в своем репозитории, вы просто создаете в нем файл .gitignore
с /config.local
, добавляете его и фиксируете в репозитории. Что это.
Ответ 3
Файл .gitignore
может быть тем, что вам нужно. В этом файле вы указываете шаблоны файлов - по одному в каждой строке, что приведет к тому, что git status
не будет сообщать об этих файлах.
Но если вы уже сделали эти файлы, они будут вытаскиваться, когда вы выполните git pull
.
Вы также можете зафиксировать файл .gitignore
в репозитории. Таким образом, те же файлы будут игнорироваться на всех компьютерах.
Ответ 4
Может быть, пример поможет. Вот раздел моего файла .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
Это только часть файла. Вам нужно будет настроить свою систему в зависимости от вашего проекта.
Дело в том, что формат является гибким, и у вас не должно быть проблем с совместным использованием файла. Если у вас есть проблемы, исключите его из репозитория.
Ответ 5
Также обратите внимание, что
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