他の作業コピーに影響を与えずに、すでにコミットされたファイルを .gitignore して削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3833757

質問

ベアリポジトリと 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 チェックアウト時にファイルを作成します。

alt text

そうすれば、 settings.py は「プライベート」(バージョン管理されない)に保たれます。ただし、各環境の特定の値はバージョン管理されており、それぞれが独自のファイルに設定されており、マージの問題は発生しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top