tags:

views:

53

answers:

3
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

How do I get a list of all 4 commits 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

I can find the list of all 4 commits by looking at file here but there must be a better way.

+1  A: 

Try git log --pretty=oneline.

poke
+2  A: 

git log --format=format:%H will print out only the commit hashes, one per line. Take a look at the pretty formats section of man git-log for more info on the format options. The --pretty=oneline suggestion is similar, but will also give you the commit messages as well as the hashes.

Emily
In current versions of git, you don't need that extra prefix - you can just do `git log --pretty=%H`.
Jefromi
Or use `git rev-list`
Jakub Narębski
A: 

If you only want the abbreviated SHA 1, try git log --abbrev-commit --pretty=oneline.

Lernkurve