WindowsのGitリポジトリのディレクトリを無視する


1106

Windowsでmsysgitを使用してGitのディレクトリまたはフォルダーを無視するにはどうすればよいですか?


キャッシュフォルダーをリポジトリから完全に除外しますか、それともそのコンテンツのみを除外しますか?
Gareth

1
OPには複数のキャッシュディレクトリがあり、その内容は無視する必要があると思いますが、リポジトリのクローンを作成するすべての人のためにそれらのディレクトリが作成されるようにしたいと考えています。
Mark Longair-2012年

@Gareth:空のフォルダーはgitで追跡されないため、コンテンツが無視されると、フォルダーも追跡されますね。
eckes

3
私が言及したのは、一部の人々は隠しファイル(一般的には.gitkeep)を使用して、保持する必要があるディレクトリを示すためです
Gareth

2
/、それはそれは無視すべきそのAディレクトリを知って作るものが終わりには?
チャーリーパーカー

回答:


1595

.gitignoreプロジェクトのディレクトリにという名前のファイルを作成します。ファイルにディレクトリ名を入力して(スラッシュを追加して)、ディレクトリを無視します。

dir_to_ignore/

詳細はこちら


130
Windows cmdプロンプトでは、「edit .gitignore」または「notepad .gitignore」を使用して正しいファイルを作成できます。
ジョーイグリーン

44
または、windows git bashコマンドプロンプトから 'touch .gitignore'を使用して、正しい名前のファイルを作成し、メモ帳などで編集することもできます...
SGB

39
または、単に.gitignoreという名前のファイルを作成します。エクスプローラーでメモ帳で編集します(末尾のドットは削除されます)。これにより、コマンドプロンプトを使用する必要がなくなります。
P.ガルブレイス

6
または、ターミナルから.gitignoreをvimすることもできます。:)
MollyCat 2013

34
または、最速の方法ですが意外にも言及されていませんが、コンソールで「echo folder_to_ignore >> .gitignore」と入力するだけです。
Godsmith

205

デフォルトでは、.gitignore実際にはファイル名がの場合、Windowsエクスプローラーが表示されます.gitignore.txt

Gitは使用しません .gitignore.txt

また.gitignore、Windowsエクスプローラーは名前のないgitignoreタイプのファイルであると見なすため、ファイルの名前をに変更することはできません。

非コマンドラインソリューション:

ファイルの名前を「.gitignore」に変更できます「。gitignore」を作成します

46
うまくいくの?私はいつもメモ帳を開いて、[名前を付けて保存]ダイアログに二重引用符で囲まれたファイル名を入力するように人々に伝えてきました。たとえば".gitignore"、拡張子を自動的に追加せずに保存します。
Arrowmaster

9
きちんと。末尾の期間を含めることは機能します。エクスプローラは最後のピリオドを取り除き、「。gitignore」という名前のファイルを作成します。私はクオートメソッドがよりきれいで、驚きを生み出す可能性が低いと思います。
Triynko

4
または、[名前を付けて保存]ダイアログで、ファイルタイプを「すべてのファイル()」に変更します。Windowsは拡張子を追加しません。
OsakaWebbie 14年

5
またはgit bashでは、フォルダに「touch .gitignore」と入力するだけです
Rayjax

3
".gitignore."-これは素晴らしいトリックです!私もいつも問題を抱えてい.htaccessました...
Obmerk Kronen

105

ファイルとディレクトリを無視するには、主に2つの方法があるようです。

  1. .gitignore

    • フォルダーの.gitignoreほかにリポジトリーのルートにファイルを配置し.gitます(Windowsでは、実際のファイル拡張子表示されていることを確認してから作成します.gitignore.(最後に空のファイル拡張子を付けるためのポイントを使用して))。
    • グローバル構成~/.gitignore_globalを作成して実行git config --global core.excludesfile ~/.gitignore_globalし、これをGit構成に追加する

    注:以前に追跡されたファイルは、実行することで追跡を解除できます git rm --cached filename

  2. リポジトリ除外 -共有する必要のないローカルファイルの場合は、ファイルパターンまたはディレクトリをファイルに追加するだけです.git/info/exclude。これらのルールはコミットされていないため、他のユーザーには表示されません。詳細はこちら

無視されるファイルのリストで例外を作成するには、この質問を参照してください。


36
良い指摘git rm --cached <filename>。作成する前に存在していたリポジトリにとって絶対に重要.gitignore
MaurerPower

2
git rm --cached <filename>は、.gitignoreで発生していた問題を修正しました:)
JeremyFelix

1
git rm --cached filenameは絶対に重要です。gitがまだファイルをステージングしていて、無視するように明確に述べていたので、私は夢中になりました(最初のコミット後にgitignoreを作成しました)。どうもありがとうございました!
Potaito 2013年

1
私の問題を解決しました。Gitignoreにベンダーフォルダーを追加したにもかかわらず、Gitはlaravelリポジトリのベンダーフォルダーを追跡していました。どうもありがとう。
Jayant 2015

44

Windowsエクスプローラーでファイルを作成する.ときに、最初にいくつかの問題がありました。

回避策は、コマンドシェルに移動し、「編集」を使用して新しいファイルを作成することでした。


2
または.、最後にエクストラを追加して、エクスプローラが.gitignore拡張機能であると考えなくなるようにします。次に、エントリで、拡張子のない末尾のドットが食べられて.gitignore TL; DR が残ります。名前を付けてみてください.gitignore.=>最終的に.gitignore
leerssej

43

特定のファイルまたはフォルダーを無視するようにGitに指示するには、.gitignoreファイルを作成する必要があります。

ただし、Windowsエクスプローラでは、ファイルの名前を指定する必要があります。拡張子だけのファイルは作成できません。トリックは、空のテキストファイルを作成し、コマンドプロンプトに移動して、ファイルの名前を次のように変更することです.gitignore

ren "New Text Document.txt" .gitignore

次に、お気に入りのテキストエディターでファイルを開き、無視するファイル/フォルダー名を追加します。次のようなワイルドカードを使用することもできます*.txt


15
または単に:echo dir_to_ignore /> .gitignore
Oliver

2
またはtype nul > .gitignore、空のファイルを作成するには
Castro Roy

または.gitignore.、Windowsエクスプローラーでファイル拡張子が非表示になっていないときにファイルを呼び出すだけです
Vairis

22

フォルダーを保持し、その中のファイルは保持しない場合は、「。gitignore」ファイルを「*」をコンテンツとしてフォルダーに配置します。このファイルにより、Gitはリポジトリのすべてのコンテンツを無視します。ただし.gitignore、リポジトリに含まれます。

$ git add path/to/folder/.gitignore

空のフォルダーを追加すると、このメッセージが表示されます(.gitignoreは隠しファイルです)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

したがって、「-f」を使用して強制的に追加します。

$ git add path/to/folder/.gitignore -f

19

Windowsでは、スラッシュを使用した余分なキャッチがあります。.gitignoreで単一のディレクトリを除外する

dir_to_exclude /

おそらく機能しますが、すべてのディレクトリを除外します

/

原因の問題あなたは(のようなスペースを含むファイル名を持つmy file.txtディレクトリ内):Gitのバッシュは(のようにバックスラッシュでこれらのスペースをエスケープmy\ file.txtWindows用)とGitは区別しません/\

すべてのディレクトリを除外するには、より適切に使用します。

** /

2つの連続するアスタリスクは、ディレクトリの内容を示します。


15

また、\.git\infoプロジェクトのディレクトリには、.gitignore(私が思うに)実質的に同じものである除外ファイルがあります。その中で無視するファイルとディレクトリを追加できます。


私はこのアプローチが好きです、そこにあるパスをうまく処理できません。メインリポジトリのフォルダーを無視したいのですが、どうすればよいですか?
Shimmy Weitzhandler

しかし、ファイルを.gitに残しておくべきではありませんか(公式な方法でコンテンツを操作します)。
Peter Mortensen

13

サブフォルダーを除外する必要がある場合に備えて、**ワイルドカードを使用して任意のレベルのサブディレクトリを除外できます。

**/build/output/Debug/

12

Gitでディレクトリ全体を無視するには、最も簡単な方法は、「*」だけを含むターゲットディレクトリ内に.gitignoreファイルを含めることです。

説明的な例

システム例

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

ゴール

  • / dirB /の内容を無視する

トップレベルの.gitignore(/root/.gitignore)

  • これはあなたの標準のgitignore情報が行くところです

無視されるディレクトリ.gitignore(/root/dirB.gitignore)

  • このファイルは単に「*」として読み込まれ、ディレクトリ自体、およびすべてのファイルが完全に無視されます。

そしてそれはとても簡単です:)


10

ときに他のすべてが失敗したファイルを編集してみてください

/.git/info/exclude

次のように、ファイルの最後に必要なディレクトリを追加します。

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/

無視するファイルとディレクトリのリストに「assets」と「compiled」のフォルダーを追加しました。


1
私はWindows 10でAtomを使用しています。ありがとう、相棒!
Putu De

私は現在の構成で他のすべてを試しましたが、これが私の最終的な決定的な答えでした。
Xedret

9

Unixの場合:

touch .gitignore

Windowsの場合:

echo > .gitignore

端末でこれらのコマンドを実行する.gitignoreと、現在の場所にファイルが作成されます。

次に、この.gitignoreファイルに(たとえばNotepad ++を使用して)無視するファイルまたはフォルダに関する情報を追加します。変更を保存します。それでおしまい :)

詳細:.gitignore



8

.gitignoreWindowsでGitがファイルを取得するのに問題がありました。$GIT_DIR/info/excludeファイルは常にかかわらず、動作しているようです。

ただし、このアプローチの欠点は、$GIT_DIRディレクトリ内のファイルがチェックインに含まれないため、共有されないことです。

ps $GIT_DIRは通常、次の名前の隠しフォルダです.git


はい、Windowsでのgitは.gitignoreに関して非常に細心の注意を払っています。ありがとう!
アンデルソップ2012

6

問題はあなたの作業ツリーが次のようなものであると思います:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... .gitignoreあなたが説明する。これにより、次のgit statusような出力が得られます。

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... 場合はindex.html、ファイルがまだリポジトリに追加されていません。(Gitはキャッシュディレクトリに無視されていないファイルがあることを確認しますが、ディレクトリのみを報告します。)これを修正するには、index.htmlファイルを追加してコミットしたことを確認してください:

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

...そしてあなたgit statusは次のようになります:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
nothing added to commit but untracked files present (use "git add" to track)

(もちろん、あなたもコミットしたいのです.gitignore。私はこのテストケースに怠惰でした。)


1
おそらく .gitignore特にあなたがそれに変更を追跡するためになりそうだとしてコミットしたい、と(あなたが1で作業している場合)ので、あなたのチームがあります。stackoverflow.com/a/767213/123033を
Dave Everitt

2
@Dave Everitt:それがまさに私が「明らかに.gitignoreもコミットしたい」と言った理由です。
Mark Longair 2013年

6

WindowsとMacでは、現在のディレクトリにあるFlower_Data_Folderという名前のフォルダーを無視したい場合は、次のようにします。

echo Flower_Data_Folder >> .gitignore

次の名前のファイルの場合data.txt

echo data.txt >> .gitignore

「Data / passwords.txt」のようなパスの場合

echo "Data/passwords.txt" >> .gitignore. 

2

同様の問題がありました。私はLinuxの人たちと共有リポジトリを備えたWindowsツールチェーンで作業しており、彼らは与えられたフォルダーに同じ(大文字小文字を除く)名前のファイルを喜んで作成しています。

その結果、リポジトリのクローンを作成し、すぐに何十もの「変更済み」ファイルを作成できるため、チェックインした場合に大混乱が発生します。

Windowsで大文字と小文字を区別し、Gitで大文字と小文字を無視しないように設定していますが、それでも失敗します(Win32 API呼び出しでは明らかに)。

ファイルをgitignoreする場合、.gitignoreファイルを追跡しないように注意する必要があります。

しかし、私はここで良い答えを見つけました:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html


リンクが壊れているようです(最初に「https」バージョンにリダイレクトされます):「セキュア接続に失敗しました。archive.robwilkerson.orgへの接続中にエラーが発生しました。PR_END_OF_FILE_ERROR」
Peter Mortensen

0

.gitignoreプロジェクトフォルダーにファイルを作成するだけで、フォルダー名をexに追加します。

frontend/node_modules
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.