Browse Source

user-manual: listing commits reachable from some refs not others

This is just an amusing example raised by someone in irc.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
maint
J. Bruce Fields 18 years ago
parent
commit
629d9f785f
  1. 48
      Documentation/user-manual.txt

48
Documentation/user-manual.txt

@ -830,6 +830,54 @@ available @@ -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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Loading…
Cancel
Save