他の作業コピーに影響を与えずに、すでにコミットされたファイルを .gitignore して削除するにはどうすればよいですか?
-
26-09-2019 - |
質問
ベアリポジトリと 2 つの作業コピーがあります。1 つは自分のマシン上に、もう 1 つはサーバー上にあります。
そうしなければならないことが分かりました .gitignore
すべてのマシンに固有である必要がある特定のファイル。それを「」と呼びましょうsettings.py
'。このファイルはすでにコミットされています。
'を入れましたsettings.py
.gitignore でこれを無視するには 'マシン上のファイルを変更しても git status が表示されます。
modified: settings.py
次のように settings.py を削除する必要があることがわかりました。
git rm --cached settings.py
それから git add .
, 、 に続く git commit
.
しかし、これをベア リポジトリにプッシュし、サーバー上の作業コピーにプルすると、 settings.py
そこには削除されています - これを特定しておかなければならないので、これは悪いことです settings.py
.
コピーすればいいのではないかと思いました settings.py
削除したら元に戻しますが、これを行うより良い方法が必要な気がします。
解決
あなたがそれらを完全に削除することなく、追跡ファイルへの変更を無視するようにgitを伝えることができます。このコマンドを使用します:
git update-index --assume-unchanged [FILENAME]
そして、あなたはそれ以降のファイルを追跡する場合:
git update-index --no-assume-unchanged [FILENAME]
他のヒント
settings.py を永久に (ローカルとリモートの両方で) 削除したままにしておいてはいかがでしょうか:
- バージョンa
setting_remote
リモート側のファイル - バージョンa
setting_local
ローカル側のファイル (つまり、ローカル固有の設定を持つ) - 追加します フィルタードライバー 権利を再構築できる
settings.py
チェックアウト時にファイルを作成します。
そうすれば、 settings.py
は「プライベート」(バージョン管理されない)に保たれます。ただし、各環境の特定の値はバージョン管理されており、それぞれが独自のファイルに設定されており、マージの問題は発生しません。