git init
新しいプロジェクトのルートで を実行しました。
次に、.gitignore
ファイルを作成しました。
と入力すると、追跡されていないファイルのリストgit status
に.gitignoreファイルが表示されます。何故ですか?
git init
新しいプロジェクトのルートで を実行しました。
次に、.gitignore
ファイルを作成しました。
と入力すると、追跡されていないファイルのリストgit status
に.gitignoreファイルが表示されます。何故ですか?
ファイルは.gitignore
リポジトリにある必要があるため、git status
示唆されているように、実際に追加してコミットする必要があります。変更をマージできるように、リポジトリ ツリーの一部である必要があります。
したがって、それをリポジトリに追加してください。gitignored ではありません。
コミットしたくない場合は.gitignore
、ファイルに追加することができます。.gitignore
ただし、その場合は、ignores を.git/info/exclude
.gitignore と同じように機能する特別なチェックアウト ローカル ファイルに追加することをお勧めしますが、.git
フォルダー内にあるため「git status」には表示されません。
無視されたファイルのリストを Git ツリーの外に保存したい場合は、.git/info/excludeファイルを使用できます。レポのチェックアウトにのみ適用されます。
実際にファイルに行.gitignore
を入れることができ.gitignore
ます。これにより、.gitignore
ファイルが git によって無視されます。私は実際にこれが良い考えだとは思いません。無視ファイルはバージョン管理および追跡する必要があると思います。完全を期すためにこれを公開しているだけです。
すべてのリポジトリ.gitignore
に自動的に適用されるグローバル ユーザー git ファイルを作成することもできます。これは、IDE およびエディター ファイル (Vim のファイルなど) に役立ちます。OS に合わせてディレクトリの場所を変更します。swp
*~
~/.gitconfig
ファイルに追加します。
[core]
excludesfile = /home/username/.gitignore
~/.gitignore
無視するファイル パターンを含むファイルを作成します。
ドット ファイルを別のリポジトリに保存して、バックアップを作成します (オプション)。
リポジトリをコピー、初期化、または複製するたびに、グローバル gitignore ファイルも使用されます。
誰かが既に.gitignore
あなたのレポに を追加しているが、それに変更を加えてそれらの変更を無視したい場合は、次の手順を実行します。
git update-index --assume-unchanged .gitignore
ソース。
ファイルを追加して.gitignore
コミットすると、「追跡されていないファイル」リストに表示されなくなります。
git add .gitignore
git commit -m "add .gitignore file"
git status
他の誰かが私たちと同じ痛みを抱えている場合に備えて。すでにコミットされているファイルを除外したかったのです。
この投稿はもっと役に立ち ました: .git/info/exclude の操作が遅すぎます
具体的には、ファイルを無視する必要があるのは、実際にはコマンド git remove を使用することです。git rm ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )を参照してください。
あなたは行くことによってそれをテストします
git rm --dry-run *.log
(すべてのログ ファイルを除外したい場合)
これは、実行した場合に除外されるものを出力します。
それから
あなたは行くことによってそれを実行します
git rm *.log
(または任意のファイル名パス/式)
*.log
次に、ファイルに行を追加し.gitignore
ます。
もちろん、.gitignore ファイルは追跡されていないためステータスに表示されており、git はそれをおいしい新しいファイルとして認識しています。
ただし、.gitignore は追跡されていないファイルであるため、.gitignore に入れると git によって無視される候補です!
したがって、答えは簡単です。次の行を追加するだけです。
.gitignore # Ignore the hand that feeds!
あなたの .gitignore ファイルに!
そして、August の回答とは逆に、.gitignore ファイルがリポジトリにある必要はありません。たまたまそれが可能であり、これはしばしば便利です。これがおそらく、.gitignore が .git/info/exclude の代替として作成された理由であり、これにはリポジトリによって追跡されるオプションがありません。とにかく、.gitignore ファイルをどのように使用するかは完全にあなた次第です。
参考までに、kernel.org のgitignore(5) マンページを確認してください。
まず第一に、他の多くの人がすでに言っているように、あなた.gitignore
は Git によって追跡されるべきです (したがって、無視されるべきではありません)。理由を説明しましょう。
(TL;DR:.gitignore
ファイルをコミットし、グローバル.gitignore
を使用して、IDE またはオペレーティング システムによって作成されたファイルを無視します)
ご存知のように、Git は分散バージョン管理システムです。これは、(開発が異なるブランチに分岐した場合でも) 異なるバージョン間を行き来できることを意味し、複数の開発者が同じプロジェクトで作業できるようにもします。
.gitignore
スナップショットを切り替えるときに追跡することにも利点がありますが、コミットする最も重要な理由は、同じプロジェクトで作業している他の開発者とファイルを共有することです。ファイルを Git にコミットすることにより、他のコントリビューターはリポジトリのクローンを作成するときにファイルを自動的に取得する.gitignore
ため、コミットしてはならないファイル (ログ ファイル、キャッシュ ディレクトリ、データベース資格情報など) を誤ってコミットしてしまうことを心配する必要はありません。など)。また、ある時点でプロジェクト.gitignore
が更新された場合、ファイルを手動で編集する代わりに、それらの変更を簡単に取り込むことができます。
もちろん、無視したいファイルやフォルダーがいくつかありますが、それらはあなたに固有のものであり、他の開発者には当てはまりません。ただし、それらはプロジェクトの.gitignore
. ファイルとフォルダーを無視できる場所が他に 2 つあります。
.gitignore
に配置する必要があります。利点は、これ.gitignore
がコンピューター上のすべてのリポジトリに適用されるため、リポジトリごとにこれを繰り返す必要がないことです。また、別のオペレーティング システムや IDE を使用している可能性があるため、他の開発者とは共有されません。.gitignore
プロジェクトのにもグローバルにも属さないファイルは、で明示的なリポジトリの除外を.gitignore
使用して無視できます。このファイルは他の開発者と共有されず、その単一のリポジトリに固有のものですyour_project_directory/.git/info/exclude
アイデアは、プロジェクトに固有のファイルをファイルに入れ.gitignore
、(既に述べたように) それをリポジトリに追加することです。たとえば.pyc
、.o
テストスイートが作成するファイル、ログ、いくつかのフィクスチャなどです。
独自のセットアップで作成されるが、必ずしもすべてのユーザーに表示されるとは限らないファイル ( .swp
vim を使用する場合のファイル、隠し ecplise ディレクトリなど) については、.git/info/exclude
(既に述べたように) を使用する必要があります。
次の「問題」に注意してください ディレクトリを追加したいが、それらのディレクトリ内にファイルを追加したくない場合があります。簡単な解決策は、次の内容で .gitignore を作成することです。
*
これは、ディレクトリが追加されていないことに気付くまでは正常に機能するように機能します (期待どおりにリポジトリに追加されます。その理由は、.gitignore も無視され、それによってディレクトリが空になるためです。したがって、次のようなことを行う必要があります。 :
*
!.gitignore
これは、現在のディレクトリでのみ機能Git
し、リポジトリからすべてのファイルを無視できるようです。
このファイルを更新する
.git/info/exclude
ワイルドカードまたはファイル名で
*pyc *swp *~
すでに .gitignore をチェックインしていて、その変更を無視したい場合は、次の回答を確認してください。
次のコマンドを使用してみてください。
git update-index --assume-unchanged FILENAME_TO_IGNORE
それを元に戻すには (変更をコミットしたい場合)、次を使用します。
git update-index --no-assume-unchanged
更新:
現在のディレクトリの下にある「変更されていないと仮定する」ファイルを一覧表示する方法は次のとおりです。
git ls-files -v | grep -E "^[a-z]"
この
-v
オプションは、「変更されていないと仮定する」ファイルに小文字を使用するためです。
私の場合、既存のファイルを除外したいと考えています。.gitignoreを変更するだけでは機能しません。私は次の手順に従いました:
git rm --cached dirToFile/file.php
vim .gitignore
git commit -a
このようにして、除外したいファイルをキャッシュから削除し、それを.gitignoreに追加しました。
gitリポジトリのベースディレクトリに移動し、次のコマンドを実行します。
echo '\\.*' >> .gitignore
Macを使用している場合は、厄介な.DS_Storeを含め、すべてのドットファイルが無視されます。
Eclipse によって作成された IDE 固有のフォルダーがおそらく NetBeans や別の IDE と同じではないという理由だけで、エンド ユーザーが Git に「.gitignore」ファイルを無視させたいと考える可能性は十分にあります。そのため、ソース コードの IDE を拮抗的に保つために、個々の開発者が異なる IDE を使用している可能性があるため、チーム全体で共有されていないカスタム git ignore を設定すると、生活が楽になります。
.DS_Store
厄介なファイルを無視するように設定するのに最適な場所は、.git/info/exclude
ファイル内であることがわかりました。
IntelliJは、gitリポジトリを設定すると、これを自動的に行うようです。
.gitignore
他のファイルを無視することです。git はファイルに関するものなので、これはファイルを無視することに関するものです。ただし、git はファイルを処理するため、このファイルは他のファイル名を一覧表示するメカニズムとして存在する必要があります。
それが呼び出された場合、それは.the_list_of_ignored_files
もう少し明白かもしれません。
アナロジーとは、やりたくない To Do 項目のリストです。それらをどこかにリストしない限り、ある種の「やること」リストであり、それらについてはわかりません。