У мене є кілька відслідкованих файлів у сховищі, які автоматично змінюються при складанні коду. Я не хочу знімати їх, я просто не хочу, щоб вони відображалися як змінені, і я не хочу, щоб вони ставали поетапно, коли я додаю git.
Чи можливо це?
У мене є кілька відслідкованих файлів у сховищі, які автоматично змінюються при складанні коду. Я не хочу знімати їх, я просто не хочу, щоб вони відображалися як змінені, і я не хочу, щоб вони ставали поетапно, коли я додаю git.
Чи можливо це?
Відповіді:
Звичайно.
git update-index --assume-unchanged [<file> ...]
Щоб скасувати та почати відстеження знову:
git update-index --no-assume-unchanged [<file> ...]
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.
--assume-unchanged
після клонування? Таким чином, щоб усі користувачі мали файли, але не бачили локальних змін у них у diff.
git update-index --no-assume-unchanged $(git ls-files $(git rev-parse --show-toplevel))
встановлена як псевдонім git. Кожного разу, коли я підозрюю, що це деякі з цих шенагіган, я просто роблю це.
Інший підхід (з видаленої зараз відповіді Сет Робертсон, але я вважаю, що це корисно, тому що його відроджують) - це підтримувати "відстежений" файл шаблону, а потім мати локальну незавершену його версію, наприклад: "config.sample.ini" або " config.ini.template "див. https://gist.github.com/canton7/1423106 для повного прикладу.
Тоді не виникне жодних занепокоєнь, якщо файл буде змінено в межах git і т.д.
Ще одне рішення з використанням атрибутів git та% f у команді filter:
git config filter.orig.clean "cat %f.orig"
cp filename filename.orig
echo "filename filter=orig" >> .git/info/attributes
echo "filename.orig" >> .git/info/exclude