1
Gitのアルゴリズムは分かりにくく、私はこれが何をしているかを知りたいと思っています。それぞれのブランチのHEAD
で構築されるようにリポジトリのファイルに正確な違いがあるのでしょうか?言い換えれば、私はそれがの「スナップショット」を意味することを修正アムさんは、私が"git diff branch1 branch2"はブランチ間の "絶対差"を表していますか?
git diff branch1 branch2
を実行し、それが示して唯一の事はFoo.csのライン56は
+ var x = bar;
- var y = bar;
であるということであるとしましょうHEAD
のリポジトリはbranch1
とbranch2
の2行以外はまったく同じですか?あるいは、diff
アルゴリズムは、最も近い共通コミットを使用して何かをして、実際に違いがないという違いを見ることができますか?
はい、あなたの考えは正しいと思われます。 –
あなたが見ているところでは正しいですが、あなたの専門用語(または少なくとも構文)はGitのものと完全に一致しません。すべての大文字の 'HEAD'や' @ 'は特別な名前です* current *ブランチ、小文字の 'head'という単語(一般的には普通のフォント:-)で表現されます)は、「ブランチヘッド」または「ブランチのチップコミット」を参照します。 'branch1'のようなブランチ* name *は、Git *リファレンス*ブランチのチップコミットのハッシュIDを含む' refs/heads/branch1'の略です。 'git checkout branch1'を実行して* new * commitを実行すると、Gitはそれを次のコメントで処理します。 – torek
... Gitは、新しいコミットをリポジトリに書き込んで、プロセス内で新しいハッシュIDを取得し、その新しいハッシュIDを 'refs/heads/branch1'エントリに詰め込み、' branch1'という名前がその新しいコミットを参照するようにします。コミットの*親*ハッシュIDは、新しいコミットを行う前のヒントであったものです。これはGitのブランチの成長方法です。 – torek