.gitignoreをgitignoreに追加する


140

.gitignoreファイルを.gitignoreそれ自体に追加することは可能ですか?

.gitignore

動かないけど

編集したファイルに表示したくない


8
なぜそれをしたいのですか?変更をコミットするだけです。.gitignoreは、プロジェクトのジャンクファイルパターンをリストするリポジトリの一部であるはずです。
KurzedMetal 2012

1
.gitignoreチームの全員が同じファイルを無視またはチェックインできるように、リポジトリの一部である必要があります。が.gitignoreコードフォルダーのどこかにあるからといって、展開する必要があるわけではありません。
Ryan Lundy


git rm --cached .gitignore.gitignore を使用および追跡解除
hassanzadeh.sd

回答:


170

.gitignoreファイルの目的は、誤って、このような生成されたキャッシュファイルとして、プロジェクト内のいくつかの共通のファイルをコミットからプロジェクトに協力して皆を防ぐためです。したがって.gitignore、はリポジトリに含まれることになっているため、無視しないでください。

1つのリポジトリ内のファイルのみを無視したいが、無視リストのコミットを避けたい場合(たとえば、個人用ファイルの場合)、それらを.git/info/excludeそのリポジトリに追加できます。

マシンのすべてのリポジトリにある特定のファイルを無視したい場合は、ファイル~/.gitignore_globalを作成して実行できます

git config --global core.excludesfile ~/.gitignore_global

36

.gitignoreは、一度もチェックインされていない場合、それ自体を無視できます。

mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       bar
#       bat
#       baz
#       foo
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       bar
#       bat
#       baz
nothing added to commit but untracked files present (use "git add" to track)

自分自身を無視するように指示する前に.gitignoreをチェックインすると、後で自分自身を無視するように変更した場合でも、常にgitステータスで表示されます。


1
まさに、これは私の場合です。.gitignoreで作業するためのローカルがgit-svn必要です。誰にも表示されません。だから私はそれを自分自身に追加しただけでうまくいきました。しかし、私は何人かの頭のいい人がこれがどのように「悪い」のかを他の人に説明するかどうかググってみました。この答えは受け入れられるべきであり、それから私は.git/info/exclude提案も賛成します。したがって、追跡を解除する必要があるだけです...少なくとも「転覆」したことがある場合(svn)、それほど驚くべきことではありません。
Tomasz Gandor 2014年

私が持っている.gitignoreファイルは、最初のバックアップを得ました。次にgit rm .gitignore、その変更を使用してコミットします。最後に、の.gitignoreルールを使用してファイルを再度追加してコミットします.gitignore。できます!
qzhang

4
これを修正するには、を実行しgit rm --cached .gitignoreます。
ギデオン

19

これを行う正当な理由は本当にありません。あなたはファイルたい場合は無視され、あなたのためだけのクローンを、それらを追加し.git/info/excludeないで、 .gitignoreファイル。


「次のファイルに既存の変更があるため、操作を完了できません」というメッセージが表示され、除外したファイルがリストされます。なぜか?
ポールマッカーシー、

3

.gitignoregitignoreファイルに入力したら、次のことを試してください。

git rm -r --cached .
git add --all
git commit -m "ignoring gitignore"
git push --set-upstream origin master

すでに述べたように機能しますが、gitignoreを無視すると、リポジトリが複数のユーザーで共有されている場合に逆効果になります。


2

はい、できます。まだgitによって追跡されているため、編集したファイルでも表示されます。gitによって追跡されたファイルは、.gitignoreにある場合でも、常に変更済みとしてマークされます。したがって、単に追跡を解除します。

しかし、それに加えた変更をコミットまたはリセットしないのはなぜですか?ステータスから削除する方がはるかに良い方法です...また、リポジトリの新しいクローンはを追加する必要が.gitignoreあることに注意してください。これは煩わしい場合があります。


はい、got rm --cached .gitignoreおそらくそれをgitとは別に削除する必要があります。
Tadeck

git rm --cached .gitignoreがgitから削除されています。これは破壊的で望ましくありません。ローカルクローンで.gitignoreを無視させる方法は?
javadba

0

これを.gitignoreファイルに書き込むことでこれを実現できます。*そのリストを無視するすべてのものを追加します!.gitignore無視リストから.gitignoreファイルを削除します。

*
!.gitignore

3
これにより、OPが望んでいるのとは逆のことが行われます
Dmitry Parzhitsky

はい、正しい、私はすでに同じことを述べました。*すべてを無視します。.gitignoreファイルを含みます。
Ankit Singh

1
つまり、OPはファイルをコードベースから削除しようとし.gitignoreます(それ自体にファイルを追加することで、これは実際には意味がありませんが、私が判断するのは誰ですか)。ここでは、ファイルが無視されないことを保証する提案を見ることができます。これは、ファイルがコードベースに存在する(追加される)ことを意味します
Dmitry Parzhitsky

そのとおりです。質問自体はねじれているようです。でも大丈夫。
Ankit Singh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.