2011-10-17 8 views
3

複数の設定ファイルがある既存のコードベースを継承しました。これらの設定ファイルはすべて一般的なもので、ダウンロードするマシンごとに編集およびカスタマイズされます。 Gitは(明らかに)彼らが編集されたことを私に伝えており、git statusを実行するたびに常に "コミットのためにステージングされていない変更"の下でそれらを表示しています。どうすればこれらのファイルをgitで無視できますか?それらをgitignoreに追加することは、すでにgitによって追跡されているので機能しません。私はレポに何かをコミットしたくないのですが、同時に私のローカルマシン上でこれらのファイルを追跡しないようにgitに伝えたいと思います。私が気づいていないこれを行う方法はありますか?私は彼らがgit stash彼らと彼らはもはや表示されませんが、実際にはそれが意味されていないと感じることがわかって...私は間違っていますか?コミットしてはいけない、変更されたファイルに対する適切なgitプロシージャー?

これが何か変わったのかどうかはわかりませんが、ローカルマシンでgit-svnを使用してSVNサーバーとやりとりしています。

答えて

2

デビッド・シュワルツが示唆しているように、database.yml.templateのようなシェル/テンプレート構成を作成し、そのファイルをコピーして自分の環境用にdatabase.ymlというように構成します。その後、私はこれらの新しいファイル.gitignoreをすることができます。

あなたはファイルがレポに存在するか変更することなく、それをしたい場合は、:

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

はGitがそのファイルへの変更を無視するようになりますが、あなたはそれをやってを意識する必要があります。ここ

詳細情報:http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html

+0

これはまさに私が探していたものです。ありがとうございました。私はリポジトリに設定ファイルを格納することが最善の考えではないことを知っていますが、現在は他のディレクトリにシンボリックリンクされています。おそらくそれらをコピーして編集する方が良い方法ですが、できるだけポータブルにしようとしていました。私たちは代替案を検討します。ありがとう! – jnevelson

+0

これは正解ではありません。 skip-worktreeビットは、この状況に対して正確に設計されているため、想定していないビットではなく、skip-worktreeビットを使用します。詳細は以下の私の答えを見てください。 –

4

リポジトリに構成ファイルを保存しないでください。これらのファイルのサンプルバージョンやそれらの「汎用」バージョンをリポジトリに保存できますが、別の名前で保存することもできます。

これらがいくつかあり、それらが独自のディレクトリにある場合は、リポジトリに汎用バージョンを保持する別のディレクトリを作成します。それらのうちの1つまたは2つだけがあり、独自のディレクトリを持たない場合は、ファイル名を使用します。リポジトリに保存されているバージョンに-defaultまたは-exampleのようなものを追加できます。

4

すでに私は(実際にはより便利birryreeが示唆何行いますが、)の設定Gitの別名を持っているgitので追跡ファイルを無視します。あなたの.gitconfigにこれを追加します。

[alias] 
    ignore = !git update-index --assume-unchanged 
    unignore = !git update-index --no-assume-unchanged 
    ignored = !git ls-files -v | grep "^[[:lower:]]" 

次にあなたが無視されたファイルを一覧表示するgit ignore foogit unignore foo、またはgit ignoredを行うことができます。

+0

'ignore 'は、' git update-index --assume-unchanged'がignore/excludeメカニズムと大きく異なるので、これらのエイリアスの混乱する動詞になる可能性があります。 –

+0

これは素晴らしい、ありがとう。しかし、私はファイルを削除してrgrepsに表示されないようにしたい。おそらくファイルを消去してそのまま残しておきます。 – Drew

+0

ignoreは、根底にあるgit apiが混乱して誤解を招くようなものがあれば、動詞としてはっきりとしたものです。特に隠されたファイルを見つけること。 – Drew

2

私の提案は、次のようになります。

  1. 名前の変更*.properties*.properties.example
  2. から
  3. は、あなたが使用したい.gitignore
+1

+1ですが、[以前のバージョンのrepostoryでコミットされたファイルを無視する危険性]を認識する価値はありますが(http://stackoverflow.com/questions/7482013/using-git-in-a-production-サーバー/ 7486368#7486368)。 –

+0

おかげで、ありがとうマーク –

0

*.propertiesを追加リポジトリ

  • から*.propertiesを削除リポジトリに*.properties.exampleを追加ビットであり、assume-unchangedビットではありません。

    git update-index --skip-worktree [filename] 
    

    は、波及効果のいくつかのために、これはassume-unchangedに好適である理由についてthis question、およびthis webpageを参照してください。

    基本的に、skip-worktreeは、ファイルの変更を維持するのが非常に困難ですが、操作を実行するとassume-unchangedが失われる可能性があります。

  • 関連する問題