2012-03-31 13 views
4

私はgitの初心者ですが、私はヒロクを使って自分のレールアプリを配備しています。私のアプリはサインアップ時に各ユーザーのブックマークレット(jsファイル)を生成します。残念ながら、私がデプロイすると、ライブサイトのユーザーのブックマークレットはすべて、開発環境のユーザーのブックマークレットで上書きされます。私はこの種のことについて他のいくつかの質問を読んだことがあります。ブックマークレットフォルダを.gitignoreファイルに追加する必要があり、rm - cacheについて何かを追加する必要があることはわかっています(しかし、しなければなりません)。私はこれらのことをやろうとしましたが、gitが現在存在するすべてのファイルを無視していて、gitignoreプロセス全体を行った後に生成されたファイルを無視していないのではないかと思います。どちらか、それとも私は間違っているだけです(これは非常に可能性が高いです)。gitがディレクトリと現在と将来のすべてのファイルを無視するようにします

助けを歓迎します。そして、これは他の多くの同様の質問と同じ根拠になることを申し訳ありません。私はできる限り多くの研究をしました。

ありがとうございました。ここで

+0

'.gitignore'はリポジトリ内に*ない*のファイルに適用されます。リポジトリ内のファイルに対しては何も行いません。あなたのファイルはリポジトリにありますか? –

+0

はい、そうです。これはレールアプリで、彼らはパブリックフォルダに入っています。 –

+1

さて、なぜGitリポジトリに開発用ユーザデータがあるのか​​は分かりません。リポジトリの外にユーザーデータを格納することを検討しましたか? –

答えて

1

をHerokuのは、あなたが展開するときに、あなたのGitリポジトリにチェックされていないすべてのファイルを掃除されるような音。ブックマークレットをGitリポジトリの外のディレクトリに保存するようにアプリケーションを修正します。

7

いくつかの簡単な手順:

  1. 次の簡単な内容で、リポジトリのルートにファイルを作成します.gitignore

    /path/to_your/folder 
    
  2. は、リポジトリにファイルを追加します。

    git add .gitignore 
    
  3. あなたの担当者からフォルダを削除します。 ository(これは物理的にフォルダは削除されません):

    git rm --cached /path/to_your/folder 
    
  4. その後

    git commit 
    

をコミットし、フォルダをリポジトリから削除する必要があり、その中の後続の変更は無視されますgitで

+0

私よりも良い答え:) – Castilho

+0

これはフォルダを無視するように働いていますが、今はherokuを使ってサイトをライブで公開すると、ブックマークレットフォルダを開発者のバージョンで上書きするのではなく、ブックマークレットフォルダを上書きして削除しますそれら。 –

+0

はい、削除されると、フォルダは(リポジトリには存在しないため)現在はプッシュされません。開発関連のファイルを置くユーザー固有のフォルダーと* default *フォルダーを持つような別の解決策を探して、他のフォルダーがそうしている場合はデフォルトのフォルダーのみを使用するようにアプリケーションを変更することができます存在しない。またはそれ以上:データベースや何かの中で、ソースの外に物を保管してください。 – poke

0

あなたの.gitignoreに以下を追加します。すでにそのパス上のファイルが追跡される場合

path/to/ignore/**/* 

、それらは無視されることはありません。あなたが突くの答え@

git rm -r --cached path/to/ignore/ 
0

を実行する必要があります

はほとんどが正しいですが、パス名に先頭のスラッシュは問題があるので、私は改訂指示を掲示しています。

以下の手順では、gitリポジトリ内のサブディレクトリの名前がfooであることを前提としています。

  1. あなたのGitの作業ディレクトリのトップレベルにいることを確認してください:

    cd "$(git rev-parse --show-toplevel)" 
    
  2. トップレベル.gitignoreファイルにfooを追加します。

    echo /foo/ >>.gitignore 
    

    先頭のスラッシュトップレベルでfooを無視すると言いますが、*/foo*/*/fooなどではありません。末尾のスラッシュは、fooがディレクトリであれば、それはファイルまたはシンボリックリンクではありません。

  3. ステージ新しく変更された.gitignore

    git add .gitignore 
    
  4. コミット:

    git commit -m "Add foo to .gitignore" 
    
  5. Gitのリポジトリにfooディレクトリの内容を追跡する停止:

    git rm -r --cached foo 
    

    オプションは、作業ディレクトリからfooフォルダを削除しないようGitに指示します。

  6. コミット:

    git commit -m "Remove the foo directory" 
    
+0

これは、フォルダを無視するように動作しますが、私はherokuを使ってサイトをライブで公開すると、ブックマークレットフォルダをdevバージョンで上書きするのではなく、ブックマークレットフォルダを何も上書きしないため削除します。 –

+0

@BonChampion:私の他の答えを見てください –