.gitignoreファイルにもかかわらず強制的に追加


413

gitファイルにもかかわらずファイルを強制的に追加する方法はあり.gitignoreますか?


4
より良い質問は-なぜあなたはそれをしたいのですか?ファイルを追跡したい場合は、無視しないでください(たとえば、.gitignoreファイルのパターンの前にを付けます)。!!dont/ignore/this/file
Ohad Schneider

6
@OhadSchneiderこれは、ビルドファイルを別のブランチに強制的にコミットする場合に役立ちます。安全な展開のためのStrongLoopなどのいくつかのプロジェクト
Deminetix

5
@OhadSchneider私たちにとっては、ほとんどの開発者がVisual Studio 2015でgitをインストールし、ユーザーフォルダーにグローバルgitignoreを追加するため、それ以上です。* .dllや* .exeなどのファイルは除外されます。これは、ビルド中に取得されるnugetパッケージのみを使用する新しいプロジェクトには最適ですが、少数の古いプロジェクトでは、ソリューションで手動で参照されるDLLを引き続き使用します。これらのプロジェクトについては、すべての開発者にグローバルgitignoreの* .dllおよび* .exeファイルにコメントを付けるように指示するのではなく、手動でそれらを含めたいと考えています。
Nullius

4
@Nullius上位レベルでそれらを無視しないようにできませんか.gitignore(たとえば、.gitignoredllと同じフォルダ、またはその上のフォルダなどにを追加します)。
Ohad Schneider

回答:


569

を参照してくださいman git-add

   -f, --force
       Allow adding otherwise ignored files.

これを実行します

git add --force my/ignore/file.foo

11
動作しないオム、gitステータスではファイルはまだ表示されません
マーク

5
まあ、私はそれを実際に動作することを確認するためにテストしました。あなたの環境(OS、Gitバージョン...)を説明できますか?これは私が基本的に行ったことです:(echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # worksコメントに改行を貼り付けることはできません、コマンドを1対1で実行してください
DanielBöhmer

4
同じことが私にも起こりました。以前にファイルでgit update-index --asume-unchangedを実行していました。--no-assume-unchangedを使用して元に戻す必要があり、動作しました
Jako

4
これは、-no--assume-unchangedを試した後でも、Windowsでgit 1.9.5を使用してワイルドカードを使用する場合にのみ機能します。「git add-f <ファイル名>」は何もしませんが、「git add -f *」は機能します。TortoiseGitを使用することもできます。
mhenry1384

@ mhenry1384 Windowsでのみワイルドカードで機能する理由は、パス区切り文字の使用方法にある可能性があります。私にとって、スラッシュ「/」は機能しますが、バックスラッシュ「\」は機能しません。cmd / PowerShellが "/"を "\"に変換するという事実により、これに簡単に実行できます。
OHW

19

DanielBöhmerの実用的なソリューションにもかかわらず、Ohad Schneiderはコメントでより良いソリューションを提供しました:

ファイルが通常は無視され、強制的に追加した場合-将来誤って再び無視される可能性があります(ファイルが削除された場合など)、コミットが行われ、ファイルが再作成されます。

次のように.gitignoreファイルで無視しないでください: Gitで無視されたディレクトリのサブディレクトリを無視しない


4
これは正しいです。小さなデータファイルに--forceオプションを使用し、その後、フォルダー構造を少し並べ替えて、すべての強制追跡ファイルを破棄しました。ただし、フォルダー階層なしで.gitignore使用している場合!specific-file-name.txt、この方法で追跡すると、リポジトリの周りのファイルが追跡されます。
マーリン

これはシナリオに依存します。たとえば、すべてのフォルダで「1.txt」を除外したい場合もあれば、「folder1 / *。txt」を除外したい場合もあります
AS

14
それは「より良い」解決策ではありません。それは別の問題の解決策です。
aij 2018年

2

これを実現する別の方法は、gitignoreファイルを一時的に編集し、ファイルを追加してから、gitignoreに戻すことです。少しハッキーな感じ


10
私は同意します、これはあなたがしたいことではありません。
マーリン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.