1870


`git ls-tree -d <commit> <path>`
を使用することで`path`のオブジェクトIDを含む出力を得ることができますが、オブジェクトID「のみ」を出力するコマンドは存在しないでしょうか?

また、ルートディレクトリのIDを取得するにはどうすればよいでしょう(`git ls-tree -d @ .`
だと、ルートディレクトリが含むファイルについての情報が表示されます)


CC BY-SA 3.0
2014-12-16T07:23:19.770
1702
2014-12-17T05:25:45.223
3479
question
git
指定したパスのツリーオブジェクトのIDを取得する方法


> また、ルートディレクトリのIDを取得するにはどうすればよいでしょう

前者の「オブジェクトID「のみ」」の方はわかりませんが、後者のルートディレクトリのツリーのIDであれば、下記のように cat-file
でコミットの内容を表示させればその中に含まれていると思います。

[code]

    git cat-file commit <commit>
    
[/code]


CC BY-SA 3.0
2014-12-16T08:23:45.270
1712
2014-12-16T08:23:45.270
2494
1702
answer


`ls-tree`とは出力単位が異なるため希望にそうかわかりませんが、

`hash-object` で指定したアイテムのオブジェクトidを取得できます。

[code]

    git hash-object <path> [<path2> [<path3> [...]]]
    
[/code]

対象はblobです。


CC BY-SA 3.0
2014-12-16T23:22:00.017
1823
2014-12-16T23:22:00.017
728
1702
answer

[code]

    git rev-parse <rev>:<path>
    
[/code]

でどうでしょう。（`HEAD:docs/` など）また、特定コミットのツリーのルートは

[code]

    git rev-parse <rev>^{tree}
    
[/code]

で取得できます。（`HEAD^{tree}` など）


CC BY-SA 3.0
2014-12-17T05:25:45.223
1870
2014-12-17T05:25:45.223
976
1702
answer