Я работаю над совместным проектом с удаленным репо. Один из исходных файлов в репо - это файл типа «конфигурация», и я хотел бы сохранить свою собственную локальную копию файла, отличную от той, что находится на удаленном компьютере, без git, смотрящего на файл. То есть, я не хочу, чтобы git отслеживал файл; Я не хочу, чтобы это было совершено, если я использую git commit -a
; и я определенно не хочу, чтобы он нажал, когда я использовал git push
на пульте дистанционного управления. Я также не хочу удалять его из удаленного репо, поэтому git rm --cached
будет ошибочным.Как получить git, чтобы полностью игнорировать файл?
Пара мест (в том числе одна на StackOverflow) предлагается с использованием git update-index --assume-unchanged <config-file>
. Казалось, это сработало; если я использую git status
, файл не указан как измененный, а git commit -a
не пытается его зафиксировать. Однако git все еще мешает мне переключаться между локациями, между «мастером» и моей рабочей ветвью. Если я пытаюсь git checkout master
перейти от рабочей ветви к мастеру, или наоборот, я получаю
error: Your local changes to the following files would be overwritten by checkout:
<config-file>
Please, commit your changes or stash them before you can switch branches.
git checkout -f
не помогает:
error: Entry '<config-file>' not uptodate. Cannot merge.
кажется, что для переключения ветвей, я должен переименуйте файл, используйте git checkout
, а затем переименуйте его обратно при каждом переключении. Это не будет приемлемым. Ни одна из команд, например, git stash
, не использует каждую раз, когда я хочу переключать ветви, что мне нужно сделать много.
Файл уже указан в моем .gitignore
.
Как я могу получить git, чтобы полностью игнорировать мой файл?
Было бы хорошо для вас дополнительные команды? – Alex
@Alex Нет, если я должен делать это каждый раз, когда я переключаю ветви. Если это то, что я могу делать реже, то, может быть. – ajb
У меня действительно есть аналогичная проблема. Мне интересно, есть ли у вас ветка, которую вам не нужно проверять и держать ее параллельно истории. так что это будет что-то вроде 'git commit-ignored && git checkout-ignore', который вы тогда псевдоним и использовали бы вместе. –
Alex