Я читал документы в этом несколько раз, и я до сих пор не полностью понимаю различия между этими разными командами. Может быть, это только я, но документация может быть более ясной:
http://git-scm.com/docs/gitignore
https://help.github.com/articles/ignoring-files
Кроме того, многие комментарии по этому вопросу, кажется, используют слова "проиндексированные", "преданные", "отслеживаемые" несколько свободно, что делает различия между этими тремя менее ясными.
Мое текущее (по общему признанию, ограниченное) понимание:
-
Файлы, сопоставленные в
.gitignore
, не будут отслеживаться в будущем. (Хотя они, возможно, были отслежены ранее.) Это означает, что они не будет отображаться в будущемgit status
, как изменено. Однако будущие изменения по-прежнему будут синхронизироваться с удаленными репозиториями. Другими словами, файлы по-прежнему "индексируются", но они не отслеживаются. Поскольку файл.gitignore
находится в каталоге проекта, файл сам может быть версией. -
Файлы, сопоставленные в
.git/info/exclude
, также не будут отслеживаться. В Кроме того, эти файлы никогда не будут удаленно синхронизированы и, таким образом, будут никогда не будет видно ни в какой форме другими пользователями. Эти файлы должны быть файлами, которые специфичны для одного пользовательского редактора или рабочего процесса. Поскольку он находится в.git
директории, файлexclude
сам не может быть версией. -
Файлы, которые на нем работают
assume-unchanged
, также не отображаются вgit status
илиgit diff
. Это похоже наexclude
, поскольку эти файлы не индексируются и не отслеживаются. Тем не менее, последняя версия файла, который будет передан доassume-unchanged
, останется видимой для всех пользователей в репо.
Мои вопросы:
-
Правильно ли указанная интерпретация? Пожалуйста, поправьте меня.
-
Если файл уже был в фиксации, что такое функциональный разные между совпадением в
.exclude
и запускомassume-unchanged
на нем? Почему бы вам предпочесть один подход к другой? -
Мой основной вариант использования заключается в том, что я хочу избежать сортировки через diff на скомпилированные файлы, но я все же хочу, чтобы эти скомпилированные файлы синхронизировались с исходными файлами. Будет ли файл
gitignore
'd еще нажат? Если нет, как управлять окончательным развертыванием скомпилированных файлов?
Заранее благодарим за помощь.