NAME
tog – Git repository browser
SYNOPSIS
tog [-hV] command [arg ...]
tog path
DESCRIPTION
tog is an interactive read-only browser for Git repositories. This repository format is described in git-repository(5).
tog supports several types of views which display repository data:
- Log view
-
Displays commits in the repository's history. This view is displayed initially if no command is specified, or if just a path is specified.
- Diff view
-
Displays work tree changes or changes made in a particular commit.
- Blame view
-
Displays the line-by-line history of a file.
- Tree view
-
Displays the tree corresponding to a particular commit.
- Ref view
-
Displays references in the repository.
tog provides global and command-specific key bindings and options. Some command-specific key bindings may be prefixed with an integer, which is denoted by N in the descriptions below, and is used as a modifier to the operation as indicated. tog will echo digits to the screen when count modifiers are entered, and complete the sequence upon input of the first non-numeric character. Count modifiers can be aborted by entering an unmapped key. Once a compound command is executed, the operation can be cancelled with C-g or Backspace.
Global options must precede the command name, and are as follows:
- -h
-
Display usage information.
- -V, --version
-
Display program version and exit immediately.
The global key bindings are:
- H, F1
-
Display run-time help. Key bindings for the focussed view will be displayed. Pressing this again inside the help view will toggle the display of key bindings for all tog views.
- Q
-
Quit tog.
- q
-
Quit the view which is in focus.
- Tab
-
Switch focus between views.
- F
-
Toggle fullscreen mode for a split-screen view. tog will automatically use vertical split-screen views if the size of the terminal window is sufficiently large.
- S
-
Switch the current split-screen layout, and render all active views in this new layout. The split-screen layout can be either vertical or horizontal. If the terminal is not wide enough when switching to a vertical split, views will render in fullscreen.
- -
-
When in a split-screen view, decrease the size of the focussed split N increments (default: 1).
- +
-
When in a split-screen view, increase the size of the focussed split N increments (default: 1).
- G
-
Go to line N in the view (default: last line).
- g
-
Go to line N in the view (default: first line).
- Right-arrow, l
-
Scroll view to the right N increments (default: 1).
Output moves left on the screen. - Left-arrow, h
-
Scroll view to the left N increments (default: 1).
Output moves right on the screen. - $
-
Scroll view to the rightmost position.
- 0
-
Scroll view left to the start of the line.
The commands for tog are as follows:
-
log [-b] [-c commit] [-r repository-path] [path] Display history of a repository. If a path is specified, show only commits which modified this path. If invoked in a work tree, the path is interpreted relative to the current working directory, and the work tree's path prefix is implicitly prepended. Otherwise, the path is interpreted relative to the repository root.
If invoked in a work tree, the log entry of the work tree's base commit will be prefixed with one of the following annotations:
* work tree's base commit and the base commit of all tracked files ~ work tree comprises mixed commits or its base commit is out-of-date -
diff [-asw] [-C number] [-c commit] [-r repository-path] [object1 object2 | path ...] If invoked within a work tree without any arguments, display all local changes in the work tree. If one or more path arguments are specified, only show changes within the specified paths.
Alternatively, if two object arguments are specified, display the differences between the two objects in the repository. Treat each of the two arguments as a reference, a tag name, an object ID, or a keyword and display differences between the corresponding objects. Both objects must be of the same type (blobs, trees, or commits). An abbreviated hash argument will be expanded to a full commit ID automatically, provided the abbreviation is unique. The keywords ":base" and ":head" resolve to the work tree's base commit and branch head, respectively. The former is only valid if invoked in a work tree, while the latter will resolve to the tip of the work tree's current branch if invoked in a work tree, otherwise it will resolve to the repository's HEAD reference. Keywords and references may be appended with ":+" or ":-" modifiers and an optional integer N to denote the Nth descendant or antecedent by first parent traversal, respectively; for example, :head:-2 denotes the work tree branch head's 2nd generation ancestor, and :base:+4 denotes the 4th generation descendant of the work tree's base commit. Similarly, foobar:+3 will denote the 3rd generation descendant of the commit resolved by the "foobar" reference. A ":+" or ":-" modifier without a trailing integer has an implicit "1" appended (e.g., :base:+ is equivalent to :base:+1).
The key bindings for tog diff are as follows (N denotes optional prefixed count modifier):
- a
-
Toggle treatment of file contents as ASCII text even if binary data was detected.
- Down-arrow, j, Ctrl-n
-
Scroll down N lines (default: 1).
- Up-arrow, k, Ctrl-p
-
Scroll up N lines (default: 1).
- Page-down, Space, Ctrl+f, f
-
Scroll down N pages (default: 1).
- Page-up, Ctrl+b, b
-
Scroll up N pages (default: 1).
- Ctrl+d, d
-
Scroll down N half pages (default: 1).
- Ctrl+u, u
-
Scroll up N half pages (default: 1).
- Home
-
Scroll to the top of the view.
- End
-
Scroll to the bottom of the view.
- g
-
Scroll to line N (default: 1).
- G
-
Like g but defaults to the last line in the diff.
- (
-
Navigate to the Nth previous file in the diff (default: 1).
- )
-
Navigate to the Nth next file in the diff (default: 1).
- {
-
Navigate to the Nth previous hunk in the diff (default: 1).
- }
-
Navigate to the Nth next hunk in the diff (default: 1).
- [
-
Reduce diff context by N lines (default: 1).
- ]
-
Increase diff context by N lines (default: 1).
- <, Comma, K
-
If the diff view was opened via the log view, move to the Nth previous (younger) commit. If the diff was opened via the blame view, move to the Nth previous line and load the corresponding commit (default: 1).
- >, Full stop, J
-
If the diff view was opened via the log view, move to the Nth next (older) commit. If the diff was opened via the blame view, move to the Nth next line and load the corresponding commit (default: 1).
- p
-
Write the currently viewed diff to a patch file in /tmp. The patch pathname is drawn to the status line.
- /
-
Prompt for a search pattern and start searching for matching lines. The search pattern is an extended regular expression. Regular expression syntax is documented in re_format(7).
- n
-
Find the Nth next line which matches the current search pattern (default: 1).
- N
-
Find the Nth previous line which matches the current search pattern (default: 1).
- w
-
Toggle display of whitespace-only changes.
- A
-
Change the diff algorithm. Supported diff algorithms are Myers (quick and dirty) and Patience (slow and tidy). This is a global setting which also affects the blame view.
The options for tog diff are as follows:
- -a
-
Treat file contents as ASCII text even if binary data is detected.
- -C number
-
Set the number of context lines shown in the diff. By default, 3 lines of context are shown.
- -c commit
-
Show differences between commits in the repository. This option may be used up to two times. When used only once, show differences between the specified commit and its first parent commit. When used twice, show differences between the two specified commits.
The expected argument is a commit ID hash, or an existing reference, tag name, or keyword, which is resolved to a commit ID. Unique abbreviated hash arguments are automatically expanded to a full hash. Both objects must be of the same type (i.e., blobs, trees, or commits).
If the -c option is used, all non-option arguments are interpreted as paths. If one or more such path arguments are provided, only show differences for the specified paths.
- -r repository-path
-
Use the repository at the specified path. If not specified, assume the repository is located at or above the current working directory. If this directory is a got(1) work tree, use the repository path associated with this work tree.
- -s
-
Show changes staged with got stage instead of showing local changes in the work tree. This option is only valid when tog diff is invoked in a work tree with no -c options.
- -w
-
Ignore whitespace-only changes.
-
blame [-c commit] [-r repository-path] path Display line-by-line history of a file at the specified path.
The key bindings for tog blame are as follows (N denotes optional prefixed count modifier):
- Down-arrow, j, Ctrl-n
-
Move the selection cursor down N pages (default: 1).
- Up-arrow, k, Ctrl-p
-
Move the selection cursor up N pages (default: 1).
- Page-down, Space, Ctrl+f, f
-
Move the selection cursor down N pages (default: 1).
- Page-up, Ctrl+b, b
-
Move the selection cursor up N pages (default: 1).
- Ctrl+d, d
-
Move the selection cursor down N half pages (default: 1).
- Ctrl+u, u
-
Move the selection cursor up N half pages (default: 1).
- Home
-
Move the selection cursor to the first line of the file.
- End
-
Move the selection cursor to the last line of the file.
- g
-
Move the selection cursor to line N (default: 1).
- G
-
Like g but defaults to the last line in the file.
- Enter
-
Open a diff view for the currently selected line's commit.
- c
-
Reload the blame view with the version of the file as found in the currently selected line's commit.
- p
-
Reload the blame view with the version of the file as found in the parent commit of the currently selected line's commit.
- C
-
Reload the blame view with the previously blamed commit.
- L
-
Open a log view for the currently selected annotated line.
- /
-
Prompt for a search pattern and start searching for matching lines. The search pattern is an extended regular expression. Regular expression syntax is documented in re_format(7).
- n
-
Find the Nth next line which matches the current search pattern (default: 1).
- N
-
Find the Nth previous line which matches the current search pattern (default: 1).
- A
-
Change the diff algorithm. Supported diff algorithms are Myers (quick and dirty) and Patience (slow and tidy). This is a global setting which also affects the diff view.
The options for tog blame are as follows:
- -c commit
-
Start traversing history at the specified commit. The expected argument is a commit ID, or a reference name or keyword which will be resolved to a commit ID. An abbreviated hash argument will be expanded to a full commit ID automatically, provided the abbreviation is unique. The keywords ":base" and ":head" resolve to the work tree's base commit and branch head, respectively. The former is only valid if invoked in a work tree, while the latter will resolve to the tip of the work tree's current branch if invoked in a work tree, otherwise it will resolve to the repository's HEAD reference. Keywords and references may be appended with ":+" or ":-" modifiers and an optional integer N to denote the Nth descendant or antecedent by first parent traversal, respectively; for example, :head:-2 denotes the work tree branch head's 2nd generation ancestor, and :base:+4 denotes the 4th generation descendant of the work tree's base commit. Similarly, foobar:+3 will denote the 3rd generation descendant of the commit resolved by the "foobar" reference. A ":+" or ":-" modifier without a trailing integer has an implicit "1" appended (e.g., :base:+ is equivalent to :base:+1).
- -r repository-path
-
Use the repository at the specified path. If not specified, assume the repository is located at or above the current working directory. If this directory is a got(1) work tree, use the repository path associated with this work tree.
-
tree [-c commit] [-r repository-path] [path] Display the repository tree. If a path is specified, show tree entries at this path.
Displayed tree entries may carry one of the following trailing annotations:
@ entry is a symbolic link / entry is a directory * entry is an executable file $ entry is a Git submodule - ref [-r repository-path]
-
Display references in the repository.
The key bindings for tog ref are as follows (N denotes optional prefixed count modifier):
- Down-arrow, j, Ctrl-n
-
Move the selection cursor down N lines (default: 1).
- Up-arrow, k, Ctrl-p
-
Move the selection cursor up N lines (default: 1).
- Page-down, Space, Ctrl+f, f
-
Move the selection cursor down N pages (default: 1).
- Page-up, Ctrl+b, b
-
Move the selection cursor up N pages (default: 1).
- Ctrl+d, d
-
Move the selection cursor down N half pages (default: 1).
- Ctrl+u, u
-
Move the selection cursor up N half pages (default: 1).
- Home, =
-
Move the selection cursor to the first reference.
- End, *
-
Move the selection cursor to the last reference.
- g
-
Move the selection cursor to reference N (default: 1).
- G
-
Like g but defaults to the last reference.
- Enter
-
Open a log view which begins traversing history at the commit resolved via the currently selected reference.
- T
-
Open a tree view showing the tree resolved via the currently selected reference.
- i
-
Show object IDs for all non-symbolic references displayed in the ref view.
- m
-
Show last modified date of each displayed reference.
- o
-
Toggle display order of references between sort by name and sort by timestamp.
- /
-
Prompt for a search pattern and start searching for matching references. The search pattern is an extended regular expression which is matched against absolute reference names. Regular expression syntax is documented in re_format(7).
- n
-
Find the Nth next reference which matches the current search pattern (default: 1).
- N
-
Find the Nth previous reference which matches the current search pattern (default: 1).
- Ctrl+l
-
Reload the list of references displayed by the ref view.
The options for tog ref are as follows:
- -r repository-path
-
Use the repository at the specified path. If not specified, assume the repository is located at or above the current working directory. If this directory is a got(1) work tree, use the repository path associated with this work tree.
ENVIRONMENT
- TOG_COLORS
-
tog shows colorized output if this variable is set to a non-empty value. The default color scheme can be modified by setting the environment variables documented below. The colors available in color schemes are “black”, “red”, “green”, “yellow”, “blue”, “magenta”, “cyan”, and “default” which maps to the terminal's default foreground color.
- TOG_COLOR_AUTHOR
-
The color used to mark up author information. If not set, the default value “cyan” is used.
- TOG_COLOR_COMMIT
-
The color used to mark up commit IDs. If not set, the default value “green” is used.
- TOG_COLOR_DATE
-
The color used to mark up date information. If not set, the default value “yellow” is used.
- TOG_COLOR_DIFF_CHUNK_HEADER
-
The color used to mark up chunk header lines in diffs. If not set, the default value “yellow” is used.
- TOG_COLOR_DIFF_META
-
The color used to mark up meta data in diffs. If not set, the default value “green” is used.
- TOG_COLOR_DIFF_MINUS
-
The color used to mark up removed lines in diffs. If not set, the default value “magenta” is used.
- TOG_COLOR_DIFF_PLUS
-
The color used to mark up added lines in diffs. If not set, the default value “cyan” is used.
- TOG_COLOR_REFS_BACKUP
-
The color used to mark up references in the “refs/got/backup/” namespace. If not set, the default value “cyan” is used.
- TOG_COLOR_REFS_HEADS
-
The color used to mark up references in the “refs/heads/” namespace. If not set, the default value “green” is used.
- TOG_COLOR_REFS_REMOTES
-
The color used to mark up references in the “refs/remotes/” namespace. If not set, the default value “yellow” is used.
- TOG_COLOR_REFS_TAGS
-
The color used to mark up references in the “refs/tags/” namespace. If not set, the default value “magenta” is used.
- TOG_COLOR_TREE_DIRECTORY
-
The color used to mark up directory tree entries. If not set, the default value “cyan” is used.
- TOG_COLOR_TREE_EXECUTABLE
-
The color used to mark up executable file tree entries. If not set, the default value “green” is used.
- TOG_COLOR_TREE_SUBMODULE
-
The color used to mark up submodule tree entries. If not set, the default value “magenta” is used.
- TOG_COLOR_TREE_SYMLINK
-
The color used to mark up symbolic link tree entries. If not set, the default value “magenta” is used.
- TOG_DIFF_ALGORITHM
-
Determines the default diff algorithm used by tog. Supported diff algorithms are Myers (quick and dirty) and Patience (slow and tidy). Valid values for TOG_DIFF_ALGORITHM are “patience” and “myers”. If unset, the Patience diff algorithm will be used by default.
- TOG_VIEW_SPLIT_MODE
-
Determines the default layout of split-screen views. If set to “h” or “H”, tog will use horizontal split by default. Otherwise, vertical split will be used. The S key can be used to switch between vertical and horizontal split layout at run-time.
EXIT STATUS
The tog utility exits 0 on success, and >0 if an error occurs.
SEE ALSO
AUTHORS
Christian Weisgerber ⟨[email protected]⟩ Josh Rickmar ⟨[email protected]⟩ Joshua Stein ⟨[email protected]⟩ Mark Jamsek ⟨[email protected]⟩ Martin Pieuchot ⟨[email protected]⟩ Omar Polo ⟨[email protected]⟩ Stefan Sperling ⟨[email protected]⟩ Klemens Nanni ⟨[email protected]⟩