Відповіді:
На думку gitignore , не забувайте, що в різних "джерелах ігнорування шаблону" існує порядок пріоритетності, який Git вважає:
$GIT_DIR/info/exclude.core.excludesfile.Останні два можуть бути вирішенням вашої проблеми, але:
(Дивіться також це питання ТАК )
Інші два рішення включають оновлення індексу ( git update-index):
git update-index --assume-unchanged: див. " Git: зніміть файл лише в локальному репо-файлі та зберігайте його у віддаленому репо ". git update-index --assume-unchangedв каталозі ". --no-assume-unchangeдля обернення ефекту: Див. " Чи можливий git addфайл, захищений на даний момент assume-unchanged? ".Однак, коли ви перевіряєте іншу філію або коли ви git pull, статус "ігнорувати" може бути скинутий. Звідси інший варіант:
git update-index --skip-worktree; побачити:
Різниця між ними пояснюється у " Git - різниця між ' assume-unchanged' та ' skip-worktree' ".
update-index --skip-work-tree. Я Джев відредагував відповідь, щоб додати кілька посилань на старі мої відповіді, що ілюструють ці дві update-indexкоманди.
Якщо ви можете змінити, .git/info/excludeви можете помістити ті самі правила. Але цей файл є лише у вашому місцевому репо-репо.
.gitпідмодулі немає жодного каталогу ...
.gitпапка підмодуля насправді знаходиться parent_repo/.git/modules/submodule_name. Отже, ви б редагувалиparent_repo/.git/modules/submodule_name/info/exclude
Є три способи сказати GIT, які файли ігнорувати:
.gitignore файли$GIT_DIR/.git/info/excludecore.excludesfileналаштуванняОстанні два моменти можуть вирішити вашу проблему.
Для отримання додаткової інформації див. Gitignore (5) .
Якщо ви просто хочете, щоб у сховищі були деякі локальні файли, і місце розташування підкаталогу було гнучким, ви можете помістити свої файли, tracked_dir1/tracked_dir2/untracked_dir/а потім додати tracked_dir1/tracked_dir2/untracked_dir/.gitignoreвміст, як-от:
*
Тобто
$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>
Я був у подібних ситуаціях, тому я додаю своє вподобане рішення, яке не бачу згаданого. Проблема git update-index --assume-unchangedв цьому випадку полягає в тому, що ви не можете зробити це для відслідковуваного файлу. Ти сказав
Я не можу змінити .gitignore мого сховища.
Я припускаю, що ви маєте на увазі, що ви не можете підштовхувати жодні зміни .gitignoreдо походження. Якщо це так, ви можете додати незавершений файл до свого локального .gitignore, тоді зробіть git update-index --assume-unchanged .gitignoreтак, щоб ваша зміна .gitignoreніколи не була натиснута. Тепер ви ігноруєте (можливо) файл без відстеження і не впливаєте на віддалений .gitignoreфайл.
Ігноруйте локальні зміни відсліджених файлів:
git update-index --assume-unchanged my-file.php
Видаліть локальні зміни відсліджених файлів:
git update-index --no-assume-unchanged my-file.php
джерело: git help update-index
--[no-]assume-unchanged
...
This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
changed upstream, you will need to handle the situation manually.
Ви можете використовувати метод глобального gitignore замість того, щоб змінювати метод у проекті https://help.github.com/articles/ignoring-files/#create-a-global-gitignore
update-index --assume-unchanged@see stackoverflow.com/a/25253144/292408