私はGitを初めて使う人です。私はがトラッキングされていることを知りたいですと未修正ファイル? 私は "Pro Git"を読んだが、それでもかなり理解できなかった。GITのコンテキストで、追跡対象ファイルと未追跡ファイルとは何ですか?
例を挙げれば、2人の違いを私に説明できる人はいますか?
おかげで、 Nayan
私はGitを初めて使う人です。私はがトラッキングされていることを知りたいですと未修正ファイル? 私は "Pro Git"を読んだが、それでもかなり理解できなかった。GITのコンテキストで、追跡対象ファイルと未追跡ファイルとは何ですか?
例を挙げれば、2人の違いを私に説明できる人はいますか?
おかげで、 Nayan
バージョン管理下にあるファイルは追跡されます。
小さな例としては、C++プロジェクトは、ソースファイルとして
Makefile
main.cpp
interface.hpp
worker.cpp
を持っているでしょう。これらをバージョン管理下に置きます。ビルド中に
main.o
worker.o
myapp
が生成されます。これらはバージョン管理の対象ではないため、git add
は使用しません。 gitは何が起こるのか気にしないので、は未修正のままです。これらのファイルを.gitignore
に追加するまで(デフォルトで.oファイルは無視されます)、gitは追加するか無視するかを知らないので、決定するまでgit status
コマンドで表示します。
ファイルが追跡されているかどうかは、バージョンによっても異なります。worker.cpp
を自動生成し、後のバージョンでバージョンコントロールから削除するとします。ファイルは、そのバージョンではuntrackedになりました。ファイルがまだバージョン管理下にあったバージョンに戻ると、gitはチェックアウト中にそのファイルを上書きすることを拒否します。
はGit Pro book chapterあなたは細部しようとするに人跡未踏のファイルの概念を言及:
あなたが与えられたSHA1をチェックアウトすると、あなたはすべてのバージョン管理ファイルの「スナップショット」を取得します。
このスナップショットで参照されていないファイルはすべて、追跡されません。これは、Gitの木の一部ではありません。
見る「git - how to tell if a file is git tracked (by shell exit code)?」
(このGitHub help pageで説明したように)あなたが無視したい任意のファイルは、人跡未踏でなければなりません。
gitは、ルールがこのファイルに追加されて無視される前に既に追跡されていたファイルを無視しないことに注意してください。ファイルがなければならないような場合には
通常git rm --cached filename
追跡ファイルである国連は、追跡回添加し、コミットされたのGitが扱う一方(バージョン制御します)。あなたが制御したくない時間ファイルのほとんどは、あなたのコンパイラによって生成されるため、非追跡ファイルはほとんどの時間ファイルです。
追跡されていないファイルを.gitignore
ファイルに追加すると、Gitは追跡するかどうか尋ねません。
純粋に技術的な観点から:追跡されたファイルは単にGitインデックスに存在するファイルです。バージョン管理下のファイルであると言うのは誤解を招きます。これは、ファイルをリポジトリに入れたファイルであることを示しているため、ファイルを追跡する必要はありません。
新しいGitリポジトリを初期化すると、インデックスは空になり、作業ディレクトリ内のすべてのファイルは追跡されません。ファイルがインデックスに追加されると、そのファイルが追跡されます。その時点でSHA-1ハッシュが作成され、オブジェクトエントリは.Git \ Objectsフォルダに配置されます。その瞬間から、Gitは作業ディレクトリ内の同じファイルの内容/名前を比較して、変更、名前変更、削除を追跡することができます。インデックスにファイルが存在する限り、そのファイルは追跡されます。
"追跡されたファイル"は、一度追加されてコミットされたファイルであると言うのは全く間違いです。追跡されたファイルは、単にインデックスツリーに存在するファイルです。つまり、ブランチのチェックアウトや、Git plumbingコマンドの追加によるものであった可能性があります。 – Jazimov