17

ベアリポジトリと2つの作業コピーがあります。1つは自分のマシンに、もう1つはサーバーにあります。すべてのマシンに固有でなければならない特定のファイルが必要である
ことが判明しました。.gitignoreそれを''と呼びましょうsettings.py。このファイルはすでにコミットされています。

私はsettings.pyそれを無視するために.gitignoreに''を入れました。マシン上のファイルを変更しても、gitstatusはまだ教えてくれます

modified:  settings.py

私は次のようにsettings.pyを削除する必要があることを理解しました:

git rm --cached settings.py

次に、、git add .続いてgit commit

しかし、これをベアリポジトリにプッシュしてサーバー上の作業コピーにプルすると、settings.pyそこで削除されます。これは、この特定のものを保持する必要があるため、悪いことですsettings.py

コピーを作成して、settings.py削除したら元に戻すことができると思いましたが、これを行うにはもっと良い方法が必要だと感じています。

4

2 に答える 2

9

追跡されたファイルへの変更を削除せずに完全に無視するようにgitに指示できます。次のコマンドを使用します。

git update-index --assume-unchanged [FILENAME]

次に、後でファイルを追跡する場合:

git update-index --no-assume-unchanged [FILENAME]
于 2010-10-20T15:56:30.843 に答える
7

むしろsettings.pyを完全に(ローカルとリモートの両方で)削除したままにしておくことができますか?

  • setting_remoteリモート側のファイルをバージョン管理する
  • ローカル側のファイルをバージョン管理しsetting_localます(つまり、ローカル固有の設定を使用します)
  • チェックアウト時に適切なファイルを再構築できるフィルタードライバーを追加します。settings.py

代替テキスト

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

于 2010-09-30T18:59:43.773 に答える