無視されたファイルをgitステータスにしない


133

git statusのリストに大量のドキュメントと構成ファイルがあるため、Gitで無視されたファイルが表示されないようにしたい変更されたが更新されていないファイルの役に立たなくなるます。

Gitがこれらのファイルを表示するのは正常ですか?

無視情報を.gitignoreGitリポジトリのルートディレクトリのファイルに入れて使用すると追加されgit add .ませんが、前述のリストに表示され、リストに表示されないため、完全に無視されていないようですによって印刷されましたgit ls-files --others -i --exclude-standard。のパターンに一致するファイルのみが~/.gitignore表示されます。

それは、初期の段階でそれらを無視せずに、少なくとも一度はコミットされたためでしょうか?

回答:


231

私がこの投稿で見つけように.gitignore、追跡されていないファイルに対してのみ機能します。ファイルをリポジトリに追加した場合、次のことができます。

git update-index --assume-unchanged <file>

またはリポジトリからそれらを削除する

git rm --cached <file>

編集する

この記事では、


4
update-indexがうまくいきました。gitステータスに無視されたファイルが表示される同様の問題...非常に迷惑です。+1
安倍ペトリロ

3
私はまだこの問題を抱えています。上記のコマンドはどちらもうまくいきませんでした。どちらの場合も、gitは問題のファイルを
認識し

5
@Cfreak git status -- <file>ファイルに「変更はコミットのためにステージングされていません」または「追跡されていないファイル」を表示しますか?前者は既にファイルがインデックスにあり、問題を解決するためにさらに情報が必要な場合です(gitメッセージを表示して別の質問を作成し、コメントへのリンクを投稿するだけです)。後者はgit(まだ)で追跡されていないファイル用ですが、ファイルにはなく、.gitignore自由にインデックスに追加できます。
MBO

1
@MBO-はい、あります。ありがとうございました!あなたのコメントは私がこの答えを見つけるのに役立ちました:stackoverflow.com/questions/594757/…これは私にとってうまくいきました。
Cfreak

1
最初のオプションは魅力のように機能します。私はすでに2番目のものを試しました、そしてそれはファイルが「削除された」としてステージングされる原因となりました、そして私は間違いなくそれを望んでいませんでした。
カーム

16

この問題も発生しました。おそらく、無視されたディレクトリ/ファイルを、最初のコミットフローでGITによって「追跡対象」としてマークされた後に.gitignoreに追加したためです。

したがって、次のようにgitトラッキングキャッシュをクリアする必要があります。

git rm --cached -r [folder/file name]

より詳細な説明はここで読むことができます:http : //www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

上記のコマンドは、リモートGITオリジンからフォルダー/ファイルの残りを削除しました。したがって、GITリポジトリはクリーンになります。


11

問題は、このファイルがまだgitキャッシュにあることです。この問題を解決するには、gitキャッシュをリセットする必要があります。

gitキャッシュをリセットします。これにより、インデックスからすべてが削除されます。

git rm -r --cached . 

すべてのファイルを再度追加します。

git add . 

コミット:

git commit -m ".gitignore was fixed." 


1

tmpディレクトリを追加したくないと思います(Visual Studio Platform)

1-以下の行をローカルの.gitignoreファイルに追加します

## ignore tmp
/tmp/
./tmp/

3-ローカルでtmpフォルダをバックアップして削除します。(他の場所にバックアップします。例:デスクトップ?)

4-リモートへの同期よりもローカルへの変更のコミット(例:github)

これらの手順の後、tmpディレクトリは再度アップロードされません。


0

男のgit-lsfiles

-i, --ignored
Show ignored files in the output. Note that this also reverses any exclude list present.

個人的には、ソースツリーにdoxygenファイルを保持する傾向があるため、これを.gitignore(ソースツリーの最上位ディレクトリにあります)に単に追加しました。

docs/*

お役に立てば幸いです。


0

次の手順は、追跡されていないファイルに対してのみ機能します。この情報は、次の構成に適用されます。

Platform: linux

Git version: git version 1.8.3.1

無視するファイルのリストを次の場所にある「除外」ファイルに入れます。

<path till .git directory>/.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]
# *~

「除外」ファイルの最終的な内容

# 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]
# *~


*.tar
*.gch

0

受け入れられた回答に従って、ファイルを変更されていないと見なすことができます。これにより、ローカルマシンで行うことはすべてリモートブランチにコミットされません。

git update-index --assume-unchanged src/main/resources/config.properties where src / main.resources / config.propertiesのようなものは、プロジェクト内でそのファイルを見つけるためのパスのサンプルです。

ここで、リポジトリからファイルを完全削除したい場合は、remove cachedは、 `git rm --cached

このシナリオは、次の状況に適用できます。

パスワードを保存するファイルがあるとしましょう。私は最初、そのファイルを間違った詳細でコミットしました。そのため、同僚が同じファイルを自分のマシンに置いています。しかし、今は自分のローカルマシンに正しい詳細を追加しました。正しいパスワードの詳細を使用して、そのファイルが誤って再度コミットされるのを防ぐにはどうすればよいですか?


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