33

私はGitが初めてです。追跡されたファイルと追跡されていないファイルとは何ですか? 「Pro Git」を読んだのですが、いまいち理解できませんでした。

誰かが例を挙げて2つの違いを説明できますか?

4

5 に答える 5

20

ファイルがバージョン管理下にある場合、ファイルは追跡されます。

小さな例として、C++プロジェクトには

Makefile
main.cpp
interface.hpp
worker.cpp

ソースファイルとして; これらをバージョン管理下に置きます。ビルド中、

main.o
worker.o
myapp

生成されます。これらはバージョン管理下に属していないため、使用git addしないでください。gitはそれらに何が起こるかを気にしないため、それらは追跡されないままです。それらを追加するまで.gitignore(.oファイルはデフォルトで無視されます)、gitはそれらを追加するか無視するかを認識しないgit statusため、決定するまでコマンドでそれらを表示します。

ファイルが追跡されるかどうかは、バージョンによっても異なります。自動生成worker.cppして、後のバージョンでバージョン管理から削除するとします。そのバージョンでは、ファイルは追跡されなくなりました。ファイルがまだバージョン管理下にあるバージョンに戻ると、gitはチェックアウト中にそのファイルの上書きを拒否します。

于 2012-03-12T08:15:34.523 に答える
11

あなたが言及したGit Proの本の章では、追跡されていないファイルの概念を詳しく説明しようとしています:

特定の SHA1 をチェックアウトすると、バージョン管理されたすべてのファイルの「スナップショット」が取得されます。
このスナップショットで参照されていないファイルは追跡されません。これは Git ツリーの一部ではありません:
git - ファイルが git で追跡されているかどうかを確認する方法 (シェル終了コードによって)?」を参照してください。

無視したいファイルは追跡されていない必要があります (このGitHub ヘルプ ページで説明されているように)。

git は、ルールがファイルに追加されて無視される前にすでに追跡されていた.gitignoreファイルを無視しないことに注意してください。
そのような場合、ファイルは追跡されないようにする必要があります。git rm --cached filename

ファイル ステータスのライフサイクル

于 2012-03-12T08:12:41.017 に答える
10

追跡されたファイルは、Gitによって処理された(バージョン管理された)ファイルであり、一度追加されてコミットされました。追跡されていないファイルは、ほとんどの場合、コンパイラによって生成されるため、制御したくないファイルです。

追跡されていないファイルをファイルに追加して.gitignore、Gitがそれらを追跡するかどうかを尋ねないようにします。

于 2012-03-12T08:13:44.787 に答える