90

重要でないデフォルト値を持つデータベース構成ファイルがあります。ただし、このファイルへの変更には、リポジトリで追跡すべきではない機密情報が含まれます。

今後の Git リポジトリのプルには、デフォルト バージョンを含めてほしいと思いますが、ユーザーによる変更はすべて無視します。

以下はローカル構成を保持しますが、削除をリポジトリにプッシュするため、将来のプルで問題が発生します。

cat "app/dir/config.file" >> .gitignore
git rm --cached app/dir/config.file

以下はジョブを実行しますが、リポジトリへのプッシュを超えて持続しません。

git update-index --assume-unchanged app/dir/config.file

これは、機密情報に関するバージョン管理の一般的な要件のようですが、解決策が見つからないようです。

4

2 に答える 2

200

いつものように、github にはこれに関する優れたドキュメントがあります。

https://help.github.com/articles/ignoring-files#ignoring-versioned-files

関連するスニペットは次のとおりです。

バージョン管理されたファイルを無視する

リポジトリ内の一部のファイルは頻繁に変更されますが、ほとんどコミットされません。通常、これらは編集されるさまざまなローカル構成ファイルですが、決してアップストリームにコミットしないでください。Git では、これらのファイルは変更されていないと想定して無視できます。

  1. ターミナルで、Git リポジトリの場所に移動します。
  2. ターミナルで次のコマンドを実行します。

git update-index --assume-unchanged path/to/file.txt

このようにファイルをマークすると、Git はファイルの変更を完全に無視します。git statusまたはの実行時に表示されることはなくgit diff、コミットされることもありません。

Git がファイルを再び追跡できるようにするには、次のコマンドを実行します。

git update-index --no-assume-unchanged path/to/file.txt.

于 2013-08-16T16:04:48.480 に答える
7

これが「最善の」方法であるかどうかはわかりません...しかし、私が見つけた方法はいくつかの手順を踏む必要があります.

新しい Laravel の例:

  1. git init
  2. .gitignoreベンダーのフォルダーを失わないようにするなど、望ましい結果が得られるようにファイルを調整します。
  3. 追跡したくないファイルのコピーを作成します (例: .htaccess、.env など)
  4. git add .
  5. git commit -m "first commit"
  6. git rm --cached public /.htaccessそれからgit rm --cached .env
  7. git commit
  8. git statusそれらのファイルを削除済みとして表示する必要があります。
  9. コピーしたファイルを元に戻します。これらは追跡から削除するように git に指示したものと同じ名前であるため、git はこれらのファイルを完全に無視します。

これらを編集できるようになり、ローカル バージョンと製品バージョンを使用できるようになりました。注: 生産セットアップでも、これらすべての手順を最初に繰り返す必要がある場合があります。これまでのところ、これは私にとってはうまくいきました。

于 2015-06-02T20:46:34.137 に答える