Skip to content

Commit

Permalink
user-manual: listing commits reachable from some refs not others
Browse files Browse the repository at this point in the history
This is just an amusing example raised by someone in irc.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
  • Loading branch information
J. Bruce Fields committed May 18, 2007
1 parent 99eaefd commit 629d9f7
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions Documentation/user-manual.txt
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,54 @@ available
Which shows that e05db0fd is reachable from itself, from v1.5.0-rc1, and
from v1.5.0-rc2, but not from v1.5.0-rc0.

[[showing-commits-unique-to-a-branch]]
Showing commits unique to a given branch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Suppose you would like to see all the commits reachable from the branch
head named "master" but not from any other head in your repository.

We can list all the heads in this repository with
gitlink:git-show-ref[1]:

-------------------------------------------------
$ git show-ref --heads
bf62196b5e363d73353a9dcf094c59595f3153b7 refs/heads/core-tutorial
db768d5504c1bb46f63ee9d6e1772bd047e05bf9 refs/heads/maint
a07157ac624b2524a059a3414e99f6f44bebc1e7 refs/heads/master
24dbc180ea14dc1aebe09f14c8ecf32010690627 refs/heads/tutorial-2
1e87486ae06626c2f31eaa63d26fc0fd646c8af2 refs/heads/tutorial-fixes
-------------------------------------------------

We can get just the branch-head names, and remove "master", with
the help of the standard utilities cut and grep:

-------------------------------------------------
$ git show-ref --heads | cut -d' ' -f2 | grep -v '^refs/heads/master'
refs/heads/core-tutorial
refs/heads/maint
refs/heads/tutorial-2
refs/heads/tutorial-fixes
-------------------------------------------------

And then we can ask to see all the commits reachable from master
but not from these other heads:

-------------------------------------------------
$ gitk master --not $( git show-ref --heads | cut -d' ' -f2 |
grep -v '^refs/heads/master' )
-------------------------------------------------

Obviously, endless variations are possible; for example, to see all
commits reachable from some head but not from any tag in the repository:

-------------------------------------------------
$ gitk ($ git show-ref --heads ) --not $( git show-ref --tags )
-------------------------------------------------

(See gitlink:git-rev-parse[1] for explanations of commit-selecting
syntax such as `--not`.)

[[making-a-release]]
Creating a changelog and tarball for a software release
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down

0 comments on commit 629d9f7

Please sign in to comment.