2016-05-24 7 views
1

私はgitに新しく、先月からそれを調べてきました。私はそれが他のバージョン管理システムと比較して非常に強力だと理解しています。昨日、私はgitブランチが.git/refs/heads /ディレクトリにリストされているコミットの先頭(SHA1)を格納するファイルであることを知りました。私の質問は:gitはちょうど1つのコミット(SHA1)によってブランチ全体をどのように追跡するのですか?私がしているとき:ブランチでgitトラックがコミットする方法は?

`git show {SHA1}` 

それは私にコミットdiffのみを示しています。コミットは、どのコミットがその親であるかを知っていますか?私がするとき

`git rev-parse HEAD^1` 

私はそれ以前のコミットをどのように示していますか?最初は、ブランチが特定の順序でコミットされたすべてのコミットを格納していると思っていますが、今この事実は私を完全に混乱させました。

答えて

3

コミットはDirected Acyclic Graphとして保存されます。ヒストリにマージコミットがない場合、単一のブランチヘッドから戻ることは、リンクされたリストと同等です。

あなたが使用してコミットの全内容を見ることができます:

git cat-file commit HEAD 

treeライン(例えばgit ls-filesによって見られるように)、そのコミットの内容を参照します。これは、ツリーではなくデルタを格納する他のVCSとは異なることに注意してください。

parent行は、前のコミットへのリンクです(存在する場合)。一般


あなたは低レベルのこの種の情報が必要な場合は、あなたはgitのmanページにLOW-LEVEL COMMANDS (PLUMBING)の下にリストされているコマンドを使用する必要があります。

関連する問題