It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Retrieve commit ids after/since a specific commit id

I am trying to get the list of all commit ids after/since a certain commit id, is there a git command..?

git log --pretty=format:"%H" --since=2014-05-04 would print all the commit-ids since 2014-05-04, similarly is there a command that could print all the commit ids after a certain commit-id?

3 answers

1 accepted

0 votes
Answer accepted

thanks Chris, yes I used the timestamp

m=`git show -s --format=%cD $COMMITID`

git log --pretty=format:"%H" --since="$m"

1 vote
Chris Fuller Atlassian Team Jun 08, 2014
git log --pretty=format:"%H" 123456..

or more briefly

git rev-list 123456..

If you want that commit to be included as well, use 123456^..

Chris,

May be I didn't put my question properly.

Example:

123456daskkl9

56787skjskdk8

adkasjdka6788

dkajsdklja76678

jkajskldal677889

If I try "git log --pretty=format:"%H" adkasjdka6788"

The out put is

adkasjdka6788

dkajsdklja76678

jkajskldal677889

Instead, what I am looking for is a command that would get the below output using adkasjdka6788 commit id.

123456daskkl9

56787skjskdk8

Chris Fuller Atlassian Team Jun 08, 2014

Consider if your commit history looks like this:

May 6          F == HEAD
              / \
May 5        /   E
            /   / \
May 4      /   /   D
          /   /     
May 3    C   /
         |  /
May 2    | B
         |/
May 1    A

So what's the difference between C and F/HEAD here? C only has A as an ancestor, but F also has B, D, and E as its ancestors (and C as well). So if I say git log C..F, it is going to tell me about what these differences are -- that is, it will tell me about B, D, E, and F.

If I say --since=2014-05-03, this is a very different question. It would have told me about the entire history, but I have excluded the things before May 3. This means it will tell me about C, D, E, and F.

Without the --since, how would git know that you want it to list D but don't want it to list B? Even if you followed a shortest path, what that would get you is directly from C to F, with D and E omitted as well. The date is the *only* reason that B didn't get listed by --since, and this is very misleading.

If this is really really really what you want, it amounts to getting the timestamp of the commit and then using --since with that timestamp. As far as I can tell, there is no intrinsic support for that. This is probably a good thing, because what that tells you is misleading.

You can use:

git log --pretty=format:"%H" commit-id..HEAD

Suggest an answer

Log in or Sign up to answer
Community showcase
Published in Bitbucket Pipelines

Building a Bitbucket Pipe as a casual coder

...ipe.sh :  #!/bin/bash source "$(dirname "$0")/common.sh" enable_debug extra_args="" if [[ "${DEBUG}" == "true" ]]; then extra_args="--verbose" fi # mandatory variables R...

4,024 views 4 22
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you