Как сделать .gitignore и удалить уже зафиксированный файл, не затрагивая другие рабочие копии?
У меня есть голый репозиторий и две рабочие копии - одна на моей машине, другая на сервере.
Оказалось, что я должен .gitignore
указать определенный файл, который должен быть конкретным для каждой машины. Позвольте называть его 'settings.py
'. Этот файл уже зафиксирован.
Я положил 'settings.py
' в .gitignore, чтобы игнорировать его. Когда я теперь изменяю файл на моей машине, статус git все еще говорит мне
modified: settings.py
Я понял, что мне нужно удалить settings.py, как это:
git rm --cached settings.py
Затем git add .
, а затем git commit
.
Но когда я сейчас подталкиваю это к голой репо и вытаскиваю ее на рабочую копию на сервере, там удаляется settings.py
- что плохо, потому что я должен сохранить этот конкретный settings.py
.
Я понял, что могу просто сделать копию settings.py
и вернуть ее обратно, как только она будет удалена, но я чувствую, что должен быть лучший способ сделать это.
Ответы
Ответ 1
Вы можете сказать git полностью игнорировать изменения в отслеживаемых файлах, не удаляя их. Используйте эту команду:
git update-index --assume-unchanged [FILENAME]
Затем, если вы хотите отслеживать файл позже:
git update-index --no-assume-unchanged [FILENAME]
Ответ 2
Не могли бы вы сохранить файл settings.py удаленно (как локально, так и удаленно) и:
- версия a
setting_remote
файл для удаленной стороны
- версия a
setting_local
файл для локальной стороны (то есть с локальными конкретными настройками)
- добавьте драйвер , чтобы восстановить правильный файл
settings.py
при оформлении заказа.
![alt text]()
Таким образом, settings.py
хранится "private" (не поддерживается версией). Но конкретные значения для каждой среды версируются, каждый из которых установлен в собственном файле, без каких-либо проблем с объединением.