2011-10-29 14 views
3

私はこれを考え出したと思いましたが、最近の試みでは失敗しています。Git無視しないでください、私はそれを取得しません

ファイルをコミットする必要があります。コミット後にそれ以降のリポジトリコミットで無視します。

このファイルはexample.txtです。

example.txtの変更をコミットしてgithubにプッシュします。

次にtouch .gitignoreを追加し、example.txtを追加して保存します。
それからgit rm --cached example.txt
そしてgit add .gitignoreコミットするために使用 - >それ

この段階で問題が削除されるようにgitのステータスは、EXAMPLE.SQL表示されているので、コミット/プッシュ、リモートリポジトリから削除プッシュ。

.gitignorerm --cachedの作成時にいくつかのバリエーションを試して、ファイルを削除するか、ファイルを無視して不要な変更をコミットします。

すでにコミットされたファイルを削除せずに無視する正確なプロセスについての洞察を探しています。

+0

あなたは本当に何をしようとしていますか?なぜローカルではないファイルをソース管理に入れたいのですか? –

+0

これは実際にgithubから直接提供されているサーバー設定ファイル(データベース)ですが、localhost dbとリモートdbにはdiffパラメータがあり、2つのデータベースを定義しない限り、この動作の仕方を変更する方法はありません。最初のコミット後にgitにそれを無視するように指示し、リモートバージョンをそのままにしておくほうが簡単です。 – Wyck

答えて

7

git rm --cached example.txtは、インデックスからファイルを削除し、それを作業ディレクトリだけに保持することを認識しています。コミットすると、追加したファイル.gitignoreに加えて、ファイルの削除がコミットされます。したがって、ファイルをプッシュすると、そのファイルはリポジトリから削除されます。

gitignore.を使用して、追跡されたファイルの変更を無視することはできません。git update-index --assume-unchanged example.txtを実行して、ファイルを「無視する」こともできます。

+0

ありがとう私はあなたが最初に答えたと思います。 – Wyck

+0

これは間違いなくトリックでしたが、なぜ.gitignoreファイルがいくつかの場合には機能しない理由を説明するものは見つかりませんでした。 intelij android projectのために.ideaでxmlファイルを除外するのに問題があります。無視パターンは、同じパス・レベルの他のディレクトリーと同じでなければなりません。どうして?知るか – speedynomads

2

可能なアプローチの1つは、Gitにファイルが変更されていないと仮定することです。

$ mkdir project 
$ cd project 
$ touch example.txt 
$ git init 
$ git add . 
$ git commit -m "checkin..." 
$ git update-index --assume-unchanged example.txt 
$ echo "hello" >> example.txt 
$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ 

信頼が必要です。特に、example.txtのバージョンとmasterのバージョンが異なるブランチに切り替えようとすると、このアプローチには厄介なことがあります。

関連する問題