Skip to content

Commit 629d9f7

Browse files
author
J. Bruce Fields
committed
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>
1 parent 99eaefd commit 629d9f7

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

Documentation/user-manual.txt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,54 @@ available
830830
Which shows that e05db0fd is reachable from itself, from v1.5.0-rc1, and
831831
from v1.5.0-rc2, but not from v1.5.0-rc0.
832832

833+
[[showing-commits-unique-to-a-branch]]
834+
Showing commits unique to a given branch
835+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
836+
837+
Suppose you would like to see all the commits reachable from the branch
838+
head named "master" but not from any other head in your repository.
839+
840+
We can list all the heads in this repository with
841+
gitlink:git-show-ref[1]:
842+
843+
-------------------------------------------------
844+
$ git show-ref --heads
845+
bf62196b5e363d73353a9dcf094c59595f3153b7 refs/heads/core-tutorial
846+
db768d5504c1bb46f63ee9d6e1772bd047e05bf9 refs/heads/maint
847+
a07157ac624b2524a059a3414e99f6f44bebc1e7 refs/heads/master
848+
24dbc180ea14dc1aebe09f14c8ecf32010690627 refs/heads/tutorial-2
849+
1e87486ae06626c2f31eaa63d26fc0fd646c8af2 refs/heads/tutorial-fixes
850+
-------------------------------------------------
851+
852+
We can get just the branch-head names, and remove "master", with
853+
the help of the standard utilities cut and grep:
854+
855+
-------------------------------------------------
856+
$ git show-ref --heads | cut -d' ' -f2 | grep -v '^refs/heads/master'
857+
refs/heads/core-tutorial
858+
refs/heads/maint
859+
refs/heads/tutorial-2
860+
refs/heads/tutorial-fixes
861+
-------------------------------------------------
862+
863+
And then we can ask to see all the commits reachable from master
864+
but not from these other heads:
865+
866+
-------------------------------------------------
867+
$ gitk master --not $( git show-ref --heads | cut -d' ' -f2 |
868+
grep -v '^refs/heads/master' )
869+
-------------------------------------------------
870+
871+
Obviously, endless variations are possible; for example, to see all
872+
commits reachable from some head but not from any tag in the repository:
873+
874+
-------------------------------------------------
875+
$ gitk ($ git show-ref --heads ) --not $( git show-ref --tags )
876+
-------------------------------------------------
877+
878+
(See gitlink:git-rev-parse[1] for explanations of commit-selecting
879+
syntax such as `--not`.)
880+
833881
[[making-a-release]]
834882
Creating a changelog and tarball for a software release
835883
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)