Подтвердить что ты не робот

Git игнорировать определенные файлы

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

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

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

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

4b9b3361

Ответ 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