私はGitが初めてです。追跡されたファイルと追跡されていないファイルとは何ですか? 「Pro Git」を読んだのですが、いまいち理解できませんでした。
誰かが例を挙げて2つの違いを説明できますか?
私はGitが初めてです。追跡されたファイルと追跡されていないファイルとは何ですか? 「Pro Git」を読んだのですが、いまいち理解できませんでした。
誰かが例を挙げて2つの違いを説明できますか?
ファイルがバージョン管理下にある場合、ファイルは追跡されます。
小さな例として、C++プロジェクトには
Makefile
main.cpp
interface.hpp
worker.cpp
ソースファイルとして; これらをバージョン管理下に置きます。ビルド中、
main.o
worker.o
myapp
生成されます。これらはバージョン管理下に属していないため、使用git add
しないでください。gitはそれらに何が起こるかを気にしないため、それらは追跡されないままです。それらを追加するまで.gitignore
(.oファイルはデフォルトで無視されます)、gitはそれらを追加するか無視するかを認識しないgit status
ため、決定するまでコマンドでそれらを表示します。
ファイルが追跡されるかどうかは、バージョンによっても異なります。自動生成worker.cpp
して、後のバージョンでバージョン管理から削除するとします。そのバージョンでは、ファイルは追跡されなくなりました。ファイルがまだバージョン管理下にあるバージョンに戻ると、gitはチェックアウト中にそのファイルの上書きを拒否します。
あなたが言及したGit Proの本の章では、追跡されていないファイルの概念を詳しく説明しようとしています:
特定の SHA1 をチェックアウトすると、バージョン管理されたすべてのファイルの「スナップショット」が取得されます。
このスナップショットで参照されていないファイルは追跡されません。これは Git ツリーの一部ではありません:
「git - ファイルが git で追跡されているかどうかを確認する方法 (シェル終了コードによって)?」を参照してください。
無視したいファイルは追跡されていない必要があります (このGitHub ヘルプ ページで説明されているように)。
git は、ルールがファイルに追加されて無視される前にすでに追跡されていた
.gitignore
ファイルを無視しないことに注意してください。
そのような場合、ファイルは追跡されないようにする必要があります。git rm --cached filename
追跡されたファイルは、Gitによって処理された(バージョン管理された)ファイルであり、一度追加されてコミットされました。追跡されていないファイルは、ほとんどの場合、コンパイラによって生成されるため、制御したくないファイルです。
追跡されていないファイルをファイルに追加して.gitignore
、Gitがそれらを追跡するかどうかを尋ねないようにします。