Search code examples
gitgit-reflog

Git reflog a specific branch?


Can I reflog a specific branch?

git reflog shows all history on the repo. But I want to check the history of one specific branch, say production. Is there a way to do that?


Solution

  • As noted in the documentation, git reflog takes an action verb (called <subcommand>) and optional modifiers. The action defaults to show, and its optional modifier is the reference name to show.

    The default is to show operations on HEAD. (Most, but not all, "everyday" commands operate on and/or through HEAD in order to operate on any other reference. Therefore the claim that git reflog shows all history is in fact false—but it does show most, which might be close enough.) This gives you an immediate and obvious answer to the question of showing operations applied to the specific branch-name production:

    git reflog show production
    

    As the documentation notes, git reflog show is an alias for git log -g --abbrev-commit --pretty=oneline, so you can also run:

    git log -g --abbrev-commit --pretty=oneline production
    

    to get the exact same output. The key switch here is -g, which directs git log to walk the given ref's reflog, rather than commits reachable from the commit to which the ref points.

    (You can continue to leave out the show verb, since it's still the default, though for this case I would advise including it—for instance, if your branch is named show or expire the name will be mistaken for the verb!)