2010-03-27 3 views
0
git init 
echo 'I am foo' > foo.txt 
git add foo.txt # this woould create a git commit object 
echo ' I am foo2' > foo.txt 
git add foo.txt # this would create another git commit object 
git commit -m 'doe' # this would create two git 
        # objects: one commit object and one tree object 

SHA1_HASH는 4 가지 커밋 목록을 어떻게 얻을 수 있습니까?모든 커밋 목록 SHA1_HASH

cd .git/objects 
ls 
(master)$ ls -al 
total 0 
drwxr-xr-x 8 nsingh staff 272 Mar 27 16:44 . 
drwxr-xr-x 13 nsingh staff 442 Mar 27 16:44 .. 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:44 37 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:43 a2 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:44 e1 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:42 e6 
drwxr-xr-x 2 nsingh staff 68 Mar 27 16:42 info 
drwxr-xr-x 2 nsingh staff 68 Mar 27 16:42 pack 

여기에 파일을보고 4 가지 커밋 목록을 모두 확인할 수 있지만 더 좋은 방법이 있어야합니다.

+0

네 개의 커밋 개체를 만든 것에 대해서도 약간의 실수가 있습니다. 'git add'는 인덱스를 검사합니다. 'git commit'을 실행했을 때 한 번만 커밋을 만들었습니다. 그리고 그 커밋에 대한 트리의 SHA1이 무엇인지 알 필요가 거의 없지만, 알고 싶다면'git log --pretty = % T'를 사용하여 볼 수 있습니다. – Cascabel

+0

당신이 만든 모든 객체는 commit (git commit에서), tree (그 commit의 tree), blob (foo.txt의 내용)입니다. 첫 번째 에코/추가 쌍은 다음 쌍으로 그것을 덮어 썼기 때문에 지속적인 영향을 미치지 않았습니다. – Cascabel

+1

내부에 대한 자세한 내용을 보려면 git 커뮤니티 도서 (http://book.git-scm.com/1_the_git_object_model.html 또는 pro git : ttp : //progit.org/book/ch9-2.html (많은 사람들 중에) – Cascabel

답변

2

시도 git log --pretty=oneline.

2

git log --format=format:%H은 행당 하나씩 커밋 해시 만 인쇄합니다. 형식 옵션에 대한 자세한 내용은 pretty formats section (man git-log)을 참조하십시오. --pretty=oneline 제안 사항은 비슷하지만 해시뿐만 아니라 커밋 메시지도 제공합니다.

+0

현재 버전의 자식에는 여분의 접두어가 필요하지 않습니다. 단지'git log --pretty = % H' 만하면됩니다. – Cascabel

+3

또는'git rev-list'를 사용하십시오 –

0

축약 된 SHA 1 만 사용하려는 경우 git log --abbrev-commit --pretty=oneline을 시도하십시오.