ファイルを含むリポジトリがありますHello.java
。コンパイルすると、追加のHello.class
ファイルが生成されます。
私はのためのエントリを作成Hello.class
中.gitignore
のファイルを。ただし、ファイルは追跡されているように見えます。
どうすればGitを無視させることができHello.class
ますか?
ファイルを含むリポジトリがありますHello.java
。コンパイルすると、追加のHello.class
ファイルが生成されます。
私はのためのエントリを作成Hello.class
中.gitignore
のファイルを。ただし、ファイルは追跡されているように見えます。
どうすればGitを無視させることができHello.class
ますか?
回答:
問題は、.gitignore
以前に(によってgit add
)追跡されなかったファイルのみを無視することです。実行git reset name_of_file
してファイルをアンステージし、保持します。(プッシュした後)リポジトリから特定のファイルも削除する場合は、を使用しますgit rm --cached name_of_file
。
git rm --cached name_of_file
はファイルをgitリポジトリから削除します。.gitignoreファイルに追加したとしても。それはそれが削除されていることを無視していません。
git reset name_of_file
追跡を削除し、ファイルを削除しません。
新しいファイルを無視する方法
世界的に
無視したいパスをファイルに追加し.gitignore
ます(そしてそれらをコミットします)。これらのファイルエントリは、リポジトリをチェックアウトする他のユーザーにも適用されます。
ローカルで
無視したいファイルへのパスをファイルに追加し.git/info/exclude
ます。これらのファイルエントリは、ローカルの作業コピーにのみ適用されます。
一時的に変更されたファイルを無視する方法
変更されたファイルが変更済みとしてリストされるのを無視するには、次のgitコマンドを使用できます。
git update-index --assume-unchanged <file>
その無知を元に戻すには、次のコマンドを使用します。
git update-index --no-assume-unchanged <file>
local
git ignore について述べた手順を実行し、システムを再起動しましたが、まだ正常に動作していることがわかります。
update-index
トリックに感謝し.gitignore
ます。ファイルの変更を回避するために完全に最適です。ファイルはGitによって追跡されます。
次の行を.gitignoreに追加します。
/Hello.class
これにより、gitからHello.classが除外されます。すでにコミットしている場合は、次のコマンドを実行します。
git rm Hello.class
すべてのクラスファイルをgitから除外する場合は、次の行を.gitignoreに追加します。
*.class
Hello.class
to .gitignore
を追加するとHello.class
、サブディレクトリで呼び出されたファイルは無視されます。ファイルHello.class
と同じディレクトリにあるファイルのみを無視する場合は、代わりに行を.gitignore
使用してください/Hello.class
。
.gitignore
ファイルはどこに置きますか?
.gitignore
gitプロジェクトのどこにでも置くことができます-パスがで始まる場合/
、それは.gitignore
ファイルの場所に相対的です。それ以外の場合は、現在のディレクトリとその子孫ディレクトリにあるファイルを再帰的に参照します。
1).gitignore
ファイルを作成します。これを行うには、.txt
ファイルを作成して拡張子を次のように変更します。
次に、名前を変更して、コマンドウィンドウに次の行を書き込みます。
rename git.txt .gitignore
git.txt
作成したファイルの名前はどこですか。
次に、ファイルを開いて、リポジトリに追加したくないすべてのファイルを書き込むことができます。たとえば、私の場合は次のようになります。
#OS junk files
[Tt]humbs.db
*.DS_Store
#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*
#Project files
[Bb]uild/
#Subversion files
.svn
# Office Temp Files
~$*
これを取得したら、Gitリポジトリに追加する必要があります。リポジトリがある場所にファイルを保存する必要があります。
次に、Git Bashで次の行を記述する必要があります。
git config --global core.excludesfile ~/.gitignore_global
リポジトリがすでに存在する場合は、次のことを行う必要があります。
git rm -r --cached .
git add .
git commit -m ".gitignore is now working"
手順2が機能しない場合は、追加するファイルのルート全体を記述してください。
無視する:
git update-index --assume-unchanged <path/to/file>
無視を取り消すには:
git update-index --no-assume-unchanged <path/to/file>
lstat(2)
コストを発生させることなく変更され、パスが変更されたことを報告する権利を留保します(… git commit -a
変更をコミットするのは自由です)。
以下の方法を使用して、追跡されたファイルの変更を無視する/無視しないことができます。
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>
.gitignore
.gitがあるディレクトリにを作成します。改行で区切られたファイルをリストできます。ワイルドカードを使用することもできます。
*.o
.*.swp
.gitignore
ファイルに配置しないことをお勧めします(そのツールがプロジェクトで必須でない場合)。お気に入りのツールのパターンをユーザーごとの除外ファイル(set core.excludesFile
)に入れることができます。それらはすべてのリポジトリで機能します。たとえばgit config --global core.excludesFile "$HOME/.git-user-excludes"
、それらをそのファイルに入れます。
公式GitHubサイトから:
既にファイルをチェックインしていて、それを無視したい場合、後でルールを追加しても、Gitはファイルを無視しません。このような場合は、ターミナルで次のコマンドを実行して、最初にファイルの追跡を解除する必要があります。
git rm --cached FILENAME
または
git rm --cached .
あなたは次のようなものを書くべきです
*.class
あなたの.gitignore
ファイルに。
*.class
を追加して、.gitignore
末尾がで終わるすべてのファイルをgitに無視させる必要があります.class
。
.gitignoreファイルを作成する。詳細については、こちらをご覧ください:Git Book-Ignoring files
また、これも確認してください:Gitで.gitignoreを使用せずにファイルを無視するにはどうすればよいですか?
(.gitignoreの代わりに).gitattributesを使用して、ファイルタイプ全体を除外することもできます。ファイルは一目瞭然ですが、参照のためにここに内容を貼り付けています。最後の行に注意してください(* .classバイナリ):
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mo binary
*.pdf binary
*.phar binary
*.class binary
.git / info / excludeに次の行を追加します:
Hello.class
.git
か?
「dump.rdb」ファイルにも同様の問題がありました。
このファイルをさまざまな方法で.gitignoreファイルに追加してみましたが、1つの方法しか機能しませんでした。
.gitignoreファイルの最後にファイル名を追加します
注:他の場所へのファイルの追加は機能しませんでした。
たとえば、https://gitlab.com/gitlab-org/gitlab-ce/raw/b3ad3f202478dd88a3cfe4461703bc3df1019f90/.gitignoreをご覧ください。
私はこれを試しました-
git status
.idea/xyz.xml
.idea/pqr.iml
Output
.DS_Store
echo "
.idea/xyz.xml
.idea/pqr.iml
Output
.DS_Store" >> .gitignore
git status
.gitignore
同様に、gitステータスで無視したいディレクトリとそのすべてのサブディレクトリ/ファイルを追加してdirectoryname/*
、このコマンドをsrc
ディレクトリから実行できます。
私も試しまし--assume-unchanged
た.gitignore
が、どちらもうまくいきませんでした。ブランチを切り替えたり、他の変更をマージしたりするのが難しくなります。これは私の解決策です:
私はときにコミット、私は手動でリストからファイルを削除します、変更します
をプルする前に、変更したファイルを隠しておきます。そして引っ張った後、私はスタッシュポップをします。
手順3でマージがトリガーされ、解決が必要な競合が発生する場合があります。これは良いことです。
これにより、チームの他のメンバーと共有されていないローカルの変更を保持できます。