2 .\" Copyright (c) 2018 Stefan Sperling
4 .\" Permission to use, copy, modify, and distribute this software for any
5 .\" purpose with or without fee is hereby granted, provided that the above
6 .\" copyright notice and this permission notice appear in all copies.
8 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 .Nd Git repository browser
32 is an interactive read-only browser for Git repositories.
33 This repository format is described in
34 .Xr git-repository 5 .
37 supports several types of views which display repository data:
40 Displays commits in the repository's history.
41 This view is displayed initially if no
43 is specified, or if just a
47 Displays work tree changes or changes made in a particular commit.
49 Displays the line-by-line history of a file.
51 Displays the tree corresponding to a particular commit.
53 Displays references in the repository.
57 provides global and command-specific key bindings and options.
58 Some command-specific key bindings may be prefixed with an integer, which is
59 denoted by N in the descriptions below, and is used as a modifier to the
60 operation as indicated.
62 will echo digits to the screen when count modifiers are entered, and complete
63 the sequence upon input of the first non-numeric character.
64 Count modifiers can be aborted by entering an unmapped key.
65 Once a compound command is executed, the operation can be cancelled with
70 Global options must precede the command name, and are as follows:
71 .Bl -tag -width tenletters
73 Display usage information.
75 Display program version and exit immediately.
78 The global key bindings are:
81 Display run-time help.
82 Key bindings for the focussed view will be displayed.
83 Pressing this again inside the help view will toggle the display of
91 Quit the view which is in focus.
93 Switch focus between views.
95 Toggle fullscreen mode for a split-screen view.
97 will automatically use vertical split-screen views if the size of the
98 terminal window is sufficiently large.
100 Switch the current split-screen layout, and render all active views in
102 The split-screen layout can be either vertical or horizontal.
103 If the terminal is not wide enough when switching to a vertical split,
104 views will render in fullscreen.
106 When in a split-screen view, decrease the size of the focussed split
107 N increments (default: 1).
109 When in a split-screen view, increase the size of the focussed split
110 N increments (default: 1).
112 Go to line N in the view (default: last line).
114 Go to line N in the view (default: first line).
115 .It Cm Right-arrow, l
116 Scroll view to the right N increments (default: 1).
118 Output moves left on the screen.
120 Scroll view to the left N increments (default: 1).
122 Output moves right on the screen.
124 Scroll view to the rightmost position.
126 Scroll view left to the start of the line.
132 .Bl -tag -width blame
137 .Op Fl r Ar repository-path
140 Display history of a repository.
143 is specified, show only commits which modified this path.
144 If invoked in a work tree, the
146 is interpreted relative to the current working directory,
147 and the work tree's path prefix is implicitly prepended.
148 Otherwise, the path is interpreted relative to the repository root.
150 If invoked in a work tree, the log entry of the work tree's base commit will
151 be prefixed with one of the following annotations:
152 .Bl -column YXZ description
153 .It * Ta work tree's base commit and the base commit of all tracked files
154 matches the branch tip
155 .It \(a~ Ta work tree comprises mixed commits or its base commit is out-of-date
158 This command is also executed if no explicit command is specified.
162 are as follows (N denotes optional prefixed count modifier):
164 .It Cm Down-arrow, j, >, Full stop, Ctrl-n
165 Move the selection cursor down N lines (default: 1).
166 .It Cm Up-arrow, k, <, Comma, Ctrl-p
167 Move the selection cursor up N lines (default: 1).
168 .It Cm Page-down, Space, Ctrl+f, f
169 Move the selection cursor down N pages (default: 1).
170 .It Cm Page-up, Ctrl+b, b
171 Move the selection cursor up N pages (default: 1).
173 Move the selection cursor down N half pages (default: 1).
175 Move the selection cursor up N half pages (default: 1).
177 Move the cursor to the newest commit.
179 Move the cursor to the oldest commit.
180 This will traverse all commits on the current branch which may take
181 a long time depending on the number of commits in branch history.
182 If needed, this operation can be cancelled with
187 Move the cursor to commit N (default: 1).
191 but defaults to the oldest commit.
195 view showing file changes made in the currently selected commit.
196 If a commit is marked with the
198 key map, open a diff view showing file changes made between the marked commit
199 and the currently selected commit.
201 Mark or unmark the selected commit.
202 When a commit is marked,
205 key on another selected commit opens a
207 view showing the changes between the marked commit and the
208 currently selected commit.
212 view showing the tree for the currently selected commit.
214 Show log entries for the parent directory of the currently selected path.
215 However when an active search is in progress or when additional commits
218 aborts the running operation.
220 Prompt for a search pattern and start searching for matching commits.
221 The search pattern is an extended regular expression which is matched
222 against a commit's author name, committer name, log message, and
224 Regular expression syntax is documented in
227 Prompt for a pattern and limit the log view's list of commits to those
228 which match the pattern.
229 If no pattern is specified, i.e. the
231 prompt is immediately closed with the Enter key, then the pattern is
233 Until the pattern is cleared, the limited list of commits replaces the
234 full list of commits for all operations supported by the log view.
235 For example, a search started with
237 will search the limited list of commits, rather than searching all commits.
238 The pattern is an extended regular expression which is matched
239 against a commit's author name, committer name, log message, and
241 Regular expression syntax is documented in
244 Find the Nth next commit which matches the current search pattern (default: 1).
246 Searching continues until either a match is found or
252 Find the Nth previous commit which matches the current search pattern
255 Searching continues until either a match is found or
263 view with new commits found in the repository or new work tree changes.
267 view and toggle display of merged commits.
270 option determines whether merged commits are displayed initially.
274 view listing all references in the repository.
275 This can then be used to open a new
277 view for arbitrary branches and tags.
279 Toggle between showing the committer name and the author name.
287 Display individual commits which were merged into the current branch
291 shows the linear history of the current branch only.
294 key binding can be used to toggle display of merged commits at run-time.
296 Start traversing history at the specified
298 The expected argument is a commit ID, or a reference name or keyword
299 which will be resolved to a commit ID.
300 An abbreviated hash argument will be expanded to a full commit ID
301 automatically, provided the abbreviation is unique.
306 resolve to the work tree's base commit and branch head, respectively.
307 The former is only valid if invoked in a work tree, while the latter will
308 resolve to the tip of the work tree's current branch if invoked in a
309 work tree, otherwise it will resolve to the repository's HEAD reference.
310 Keywords and references may be appended with
314 modifiers and an optional integer N to denote the
315 Nth descendant or antecedent by first parent traversal, respectively;
318 denotes the work tree branch head's 2nd generation ancestor, and
320 denotes the 4th generation descendant of the work tree's base commit.
323 will denote the 3rd generation descendant of the commit resolved by the
330 modifier without a trailing integer has an implicit
338 .It Fl r Ar repository-path
339 Use the repository at the specified path.
340 If not specified, assume the repository is located at or above the current
342 If this directory is a
344 work tree, use the repository path associated with this work tree.
351 .Op Fl r Ar repository-path
352 .Op Ar object1 Ar object2 | Ar path ...
354 If invoked within a work tree without any arguments, display all local
355 changes in the work tree.
358 arguments are specified, only show changes within the specified paths.
360 Alternatively, if two object arguments are specified, display the differences
361 between the two objects in the repository.
362 Treat each of the two arguments as a reference, a tag name, an object
363 ID, or a keyword and display differences between the corresponding
365 Both objects must be of the same type (blobs, trees, or commits).
366 An abbreviated hash argument will be expanded to a full commit ID
367 automatically, provided the abbreviation is unique.
372 resolve to the work tree's base commit and branch head, respectively.
373 The former is only valid if invoked in a work tree, while the latter will
374 resolve to the tip of the work tree's current branch if invoked in a
375 work tree, otherwise it will resolve to the repository's HEAD reference.
376 Keywords and references may be appended with
380 modifiers and an optional integer N to denote the
381 Nth descendant or antecedent by first parent traversal, respectively;
384 denotes the work tree branch head's 2nd generation ancestor, and
386 denotes the 4th generation descendant of the work tree's base commit.
389 will denote the 3rd generation descendant of the commit resolved by the
396 modifier without a trailing integer has an implicit
407 are as follows (N denotes optional prefixed count modifier):
410 Toggle treatment of file contents as ASCII text even if binary data was
412 .It Cm Down-arrow, j, Ctrl-n
413 Scroll down N lines (default: 1).
414 .It Cm Up-arrow, k, Ctrl-p
415 Scroll up N lines (default: 1).
416 .It Cm Page-down, Space, Ctrl+f, f
417 Scroll down N pages (default: 1).
418 .It Cm Page-up, Ctrl+b, b
419 Scroll up N pages (default: 1).
421 Scroll down N half pages (default: 1).
423 Scroll up N half pages (default: 1).
425 Scroll to the top of the view.
427 Scroll to the bottom of the view.
429 Scroll to line N (default: 1).
433 but defaults to the last line in the diff.
435 Navigate to the Nth previous file in the diff (default: 1).
437 Navigate to the Nth next file in the diff (default: 1).
439 Navigate to the Nth previous hunk in the diff (default: 1).
441 Navigate to the Nth next hunk in the diff (default: 1).
443 Reduce diff context by N lines (default: 1).
445 Increase diff context by N lines (default: 1).
449 view was opened via the
451 view, move to the Nth previous (younger) commit.
452 If the diff was opened via the
454 view, move to the Nth previous line and load the corresponding commit
456 .It Cm >, Full stop, J
459 view was opened via the
461 view, move to the Nth next (older) commit.
462 If the diff was opened via the
464 view, move to the Nth next line and load the corresponding commit (default: 1).
466 Write the currently viewed diff to a patch file in
468 The patch pathname is drawn to the status line.
470 Prompt for a search pattern and start searching for matching lines.
471 The search pattern is an extended regular expression.
472 Regular expression syntax is documented in
475 Find the Nth next line which matches the current search pattern (default: 1).
477 Find the Nth previous line which matches the current search pattern
480 Toggle display of whitespace-only changes.
482 Change the diff algorithm.
483 Supported diff algorithms are Myers (quick and dirty) and
484 Patience (slow and tidy).
485 This is a global setting which also affects the
495 Treat file contents as ASCII text even if binary data is detected.
497 Set the number of context lines shown in the diff.
498 By default, 3 lines of context are shown.
500 Show differences between commits in the repository.
501 This option may be used up to two times.
502 When used only once, show differences between the specified
504 and its first parent commit.
505 When used twice, show differences between the two specified commits.
507 The expected argument is a commit ID hash, or an existing reference,
508 tag name, or keyword, which is resolved to a commit ID.
509 Unique abbreviated hash arguments are automatically expanded to a full hash.
510 Both objects must be of the same type (i.e., blobs, trees, or commits).
514 option is used, all non-option arguments are interpreted as paths.
517 arguments are provided, only show differences for the specified paths.
518 .It Fl r Ar repository-path
519 Use the repository at the specified path.
520 If not specified, assume the repository is located at or above the current
522 If this directory is a
524 work tree, use the repository path associated with this work tree.
526 Show changes staged with
528 instead of showing local changes in the work tree.
529 This option is only valid when
531 is invoked in a work tree with no
535 Ignore whitespace-only changes.
540 .Op Fl r Ar repository-path
543 Display line-by-line history of a file at the specified path.
547 are as follows (N denotes optional prefixed count modifier):
549 .It Cm Down-arrow, j, Ctrl-n
550 Move the selection cursor down N pages (default: 1).
551 .It Cm Up-arrow, k, Ctrl-p
552 Move the selection cursor up N pages (default: 1).
553 .It Cm Page-down, Space, Ctrl+f, f
554 Move the selection cursor down N pages (default: 1).
555 .It Cm Page-up, Ctrl+b, b
556 Move the selection cursor up N pages (default: 1).
558 Move the selection cursor down N half pages (default: 1).
560 Move the selection cursor up N half pages (default: 1).
562 Move the selection cursor to the first line of the file.
564 Move the selection cursor to the last line of the file.
566 Move the selection cursor to line N (default: 1).
570 but defaults to the last line in the file.
574 view for the currently selected line's commit.
578 view with the version of the file as found in the currently
579 selected line's commit.
583 view with the version of the file as found in the parent commit of the
584 currently selected line's commit.
588 view with the previously blamed commit.
592 view for the currently selected annotated line.
594 Prompt for a search pattern and start searching for matching lines.
595 The search pattern is an extended regular expression.
596 Regular expression syntax is documented in
599 Find the Nth next line which matches the current search pattern (default: 1).
601 Find the Nth previous line which matches the current search pattern
604 Change the diff algorithm.
605 Supported diff algorithms are Myers (quick and dirty) and
606 Patience (slow and tidy).
607 This is a global setting which also affects the
617 Start traversing history at the specified
619 The expected argument is a commit ID, or a reference name or keyword
620 which will be resolved to a commit ID.
621 An abbreviated hash argument will be expanded to a full commit ID
622 automatically, provided the abbreviation is unique.
627 resolve to the work tree's base commit and branch head, respectively.
628 The former is only valid if invoked in a work tree, while the latter will
629 resolve to the tip of the work tree's current branch if invoked in a
630 work tree, otherwise it will resolve to the repository's HEAD reference.
631 Keywords and references may be appended with
635 modifiers and an optional integer N to denote the
636 Nth descendant or antecedent by first parent traversal, respectively;
639 denotes the work tree branch head's 2nd generation ancestor, and
641 denotes the 4th generation descendant of the work tree's base commit.
644 will denote the 3rd generation descendant of the commit resolved by the
651 modifier without a trailing integer has an implicit
659 .It Fl r Ar repository-path
660 Use the repository at the specified path.
661 If not specified, assume the repository is located at or above the current
663 If this directory is a
665 work tree, use the repository path associated with this work tree.
670 .Op Fl r Ar repository-path
673 Display the repository tree.
676 is specified, show tree entries at this path.
678 Displayed tree entries may carry one of the following trailing annotations:
679 .Bl -column YXZ description
680 .It @ Ta entry is a symbolic link
681 .It / Ta entry is a directory
682 .It * Ta entry is an executable file
683 .It $ Ta entry is a Git submodule
686 Symbolic link entries are also annotated with the target path of the link.
690 are as follows (N denotes optional prefixed count modifier):
692 .It Cm Down-arrow, j, Ctrl-n
693 Move the selection cursor down N lines (default: 1).
694 .It Cm Up-arrow, k, Ctrl-p
695 Move the selection cursor up N lines (default: 1).
696 .It Cm Page-down, Space, Ctrl+f, f
697 Move the selection cursor down N pages (default: 1).
698 .It Cm Page-up, Ctrl+b, b
699 Move the selection cursor up N pages (default: 1).
701 Move the selection cursor down N half pages (default: 1).
703 Move the selection cursor up N half pages (default: 1).
705 Move the selection cursor to the first entry.
707 Move the selection cursor to the last entry.
709 Move the selection cursor to entry N (default: 1).
713 but defaults to the last entry.
715 Enter the currently selected directory, or switch to the
717 view for the currently selected file.
721 view for the currently selected tree entry.
725 view listing all references in the repository.
726 This can then be used to open a new
728 view for arbitrary branches and tags.
730 Move back to the Nth parent directory (default: 1).
732 Show object IDs for all objects displayed in the
736 Prompt for a search pattern and start searching for matching tree entries.
737 The search pattern is an extended regular expression which is matched
738 against the tree entry's name.
739 Regular expression syntax is documented in
742 Find the Nth next tree entry which matches the current search pattern
745 Find the Nth previous tree entry which matches the current search pattern
754 Start traversing history at the specified
756 The expected argument is a commit ID, or a reference name or keyword
757 which will be resolved to a commit ID.
758 An abbreviated hash argument will be expanded to a full commit ID
759 automatically, provided the abbreviation is unique.
764 resolve to the work tree's base commit and branch head, respectively.
765 The former is only valid if invoked in a work tree, while the latter will
766 resolve to the tip of the work tree's current branch if invoked in a
767 work tree, otherwise it will resolve to the repository's HEAD reference.
768 Keywords and references may be appended with
772 modifiers and an optional integer N to denote the
773 Nth descendant or antecedent by first parent traversal, respectively;
776 denotes the work tree branch head's 2nd generation ancestor, and
778 denotes the 4th generation descendant of the work tree's base commit.
781 will denote the 3rd generation descendant of the commit resolved by the
788 modifier without a trailing integer has an implicit
796 .It Fl r Ar repository-path
797 Use the repository at the specified path.
798 If not specified, assume the repository is located at or above the current
800 If this directory is a
802 work tree, use the repository path associated with this work tree.
804 .It Cm ref Op Fl r Ar repository-path
805 Display references in the repository.
809 are as follows (N denotes optional prefixed count modifier):
811 .It Cm Down-arrow, j, Ctrl-n
812 Move the selection cursor down N lines (default: 1).
813 .It Cm Up-arrow, k, Ctrl-p
814 Move the selection cursor up N lines (default: 1).
815 .It Cm Page-down, Space, Ctrl+f, f
816 Move the selection cursor down N pages (default: 1).
817 .It Cm Page-up, Ctrl+b, b
818 Move the selection cursor up N pages (default: 1).
820 Move the selection cursor down N half pages (default: 1).
822 Move the selection cursor up N half pages (default: 1).
824 Move the selection cursor to the first reference.
826 Move the selection cursor to the last reference.
828 Move the selection cursor to reference N (default: 1).
832 but defaults to the last reference.
836 view which begins traversing history at the commit resolved via the
837 currently selected reference.
841 view showing the tree resolved via the currently selected reference.
843 Show object IDs for all non-symbolic references displayed in the
847 Show last modified date of each displayed reference.
849 Toggle display order of references between sort by name and sort by timestamp.
851 Prompt for a search pattern and start searching for matching references.
852 The search pattern is an extended regular expression which is matched
853 against absolute reference names.
854 Regular expression syntax is documented in
857 Find the Nth next reference which matches the current search pattern
860 Find the Nth previous reference which matches the current search pattern
863 Reload the list of references displayed by the
872 .It Fl r Ar repository-path
873 Use the repository at the specified path.
874 If not specified, assume the repository is located at or above the current
876 If this directory is a
878 work tree, use the repository path associated with this work tree.
882 .Bl -tag -width TOG_VIEW_SPLIT_MODE
885 shows colorized output if this variable is set to a non-empty value.
886 The default color scheme can be modified by setting the environment
887 variables documented below.
888 The colors available in color schemes are
898 which maps to the terminal's default foreground color.
899 .It Ev TOG_COLOR_AUTHOR
900 The color used to mark up author information.
901 If not set, the default value
904 .It Ev TOG_COLOR_COMMIT
905 The color used to mark up commit IDs.
906 If not set, the default value
909 .It Ev TOG_COLOR_DATE
910 The color used to mark up date information.
911 If not set, the default value
914 .It Ev TOG_COLOR_DIFF_CHUNK_HEADER
915 The color used to mark up chunk header lines in diffs.
916 If not set, the default value
919 .It Ev TOG_COLOR_DIFF_META
920 The color used to mark up meta data in diffs.
921 If not set, the default value
924 .It Ev TOG_COLOR_DIFF_MINUS
925 The color used to mark up removed lines in diffs.
926 If not set, the default value
929 .It Ev TOG_COLOR_DIFF_PLUS
930 The color used to mark up added lines in diffs.
931 If not set, the default value
934 .It Ev TOG_COLOR_REFS_BACKUP
935 The color used to mark up references in the
938 If not set, the default value
941 .It Ev TOG_COLOR_REFS_HEADS
942 The color used to mark up references in the
945 If not set, the default value
948 .It Ev TOG_COLOR_REFS_REMOTES
949 The color used to mark up references in the
952 If not set, the default value
955 .It Ev TOG_COLOR_REFS_TAGS
956 The color used to mark up references in the
959 If not set, the default value
962 .It Ev TOG_COLOR_TREE_DIRECTORY
963 The color used to mark up directory tree entries.
964 If not set, the default value
967 .It Ev TOG_COLOR_TREE_EXECUTABLE
968 The color used to mark up executable file tree entries.
969 If not set, the default value
972 .It Ev TOG_COLOR_TREE_SUBMODULE
973 The color used to mark up submodule tree entries.
974 If not set, the default value
977 .It Ev TOG_COLOR_TREE_SYMLINK
978 The color used to mark up symbolic link tree entries.
979 If not set, the default value
982 .It Ev TOG_DIFF_ALGORITHM
983 Determines the default diff algorithm used by
985 Supported diff algorithms are Myers (quick and dirty) and
986 Patience (slow and tidy).
988 .Ev TOG_DIFF_ALGORITHM
993 If unset, the Patience diff algorithm will be used by default.
994 .It Ev TOG_VIEW_SPLIT_MODE
995 Determines the default layout of split-screen views.
1001 will use horizontal split by default.
1002 Otherwise, vertical split will be used.
1005 key can be used to switch between vertical and horizontal split layout
1012 .Xr git-repository 5 ,
1015 .An Christian Weisgerber Aq Mt naddy@openbsd.org
1016 .An Josh Rickmar Aq Mt jrick@zettaport.com
1017 .An Joshua Stein Aq Mt jcs@openbsd.org
1018 .An Mark Jamsek Aq Mt mark@jamsek.dev
1019 .An Martin Pieuchot Aq Mt mpi@openbsd.org
1020 .An Omar Polo Aq Mt op@openbsd.org
1021 .An Stefan Sperling Aq Mt stsp@openbsd.org
1022 .An Klemens Nanni Aq Mt kn@openbsd.org