1GIT-COLA(1)                        git-cola                        GIT-COLA(1)
2
3
4

NAME

6       git-cola - The highly caffeinated Git GUI
7

SYNOPSIS

9       git cola [options] [sub-command]
10

DESCRIPTION

12       Git Cola is a sleek and powerful Git GUI.
13

OPTIONS

15   --amend
16       Start git cola in amend mode.
17
18   --prompt
19       Prompt for a Git repository.  Defaults to the current directory.
20
21   -r, --repo <path>
22       Open the Git repository at <path>.  Defaults to the current directory.
23
24   -s, --status-filter <filter>
25       Apply the path filter to the status widget.
26
27   --version
28       Print the git cola version and exit.
29
30   -h, --help
31       Show usage and optional arguments.
32
33   --help-commands
34       Show available sub-commands.
35

SUB-COMMANDS

37   am
38       Apply patches.
39
40   archive
41       Export tarballs from Git.
42
43   branch
44       Create branches.
45
46   browse
47       Browse tracked files.
48
49   config
50       Configure settings.
51
52   dag
53       Start the git dag Git history browser.
54
55   diff
56       Diff changed files.
57
58   fetch
59       Fetch history from remote repositories.
60
61   grep
62       Use git grep to search for content.
63
64   merge
65       Merge branches.
66
67   pull
68       Fetch and merge remote branches.
69
70   push
71       Push branches to remotes.
72
73   rebase
74       Start an interactive rebase.
75
76   remote
77       Create and edit remotes.
78
79   search
80       Search for commits.
81
82   stash
83       Stash uncommitted modifications.
84
85   tag
86       Create tags.
87
88   version
89       Print the git cola version.
90

CONFIGURE YOUR EDITOR

92       The editor used by Ctrl-e is configured from the Preferences screen.
93
94       The  following  environment  variables  are consulted when no editor is
95       configured.  If defined, the first of these variables is used:
96
97GIT_VISUAL
98
99VISUAL
100
101GIT_EDITOR
102
103EDITOR
104
105       The *VISUAL variables are consulted before  the  *EDITOR  variables  so
106       that  you  can configure a graphical editor independently of the editor
107       used by the Git CLI.
108
109       ProTip: Configuring your editor to gvim -f -p will open  multiple  tabs
110       when editing files.  gvim -f -o uses splits.
111
112       git  cola is {vim, emacs, textpad, notepad++}-aware.  When you select a
113       line in the diff or grep screens and press any of Enter, Ctrl-e, or the
114       Edit button, you are taken to that exact line.
115
116       The  editor  preference  is  saved in the gui.editor variable using git
117       config.
118
119       The following are some recommend editor configurations.
120
121       • Neovim + Neovim-Qt
122
123          git config --global core.editor nvim
124          git config --global gui.editor 'nvim-qt --nofork'
125
126       • Vim + gvim
127
128          git config --global core.editor vim
129          git config --global gui.editor 'gvim -f'
130
131       • Sublime Text
132
133          git config --global gui.editor 'subl --wait'
134

KEYBOARD SHORTCUTS

136       git cola has many useful keyboard shortcuts.
137
138       Many of git cola’s editors understand vim-style hotkeys, eg.  {h,j,k,l}
139       for navigating in the diff, status, grep, and file browser widgets.
140
141       {d,u}  move  down/up  one  half  page  at  a  time  (similar  to  vim’s
142       ctrl-{d,u}).  The space and shift-space hotkeys are mapped to the  same
143       operations.
144
145       Shift-{j,k,d,u,f,b,page-up,page-down,left,right,up,down} can be be used
146       in the diff editor to select lines while navigating.
147
148       s is a useful hotkey in the diff editor.  It stages/unstages  the  cur‐
149       rent  selection when a selection is present.  When nothing is selected,
150       the diff hunk at the current text  cursor  position  is  staged.   This
151       makes  it  very  easy  to review changes by selecting good hunks with s
152       while navigating down and over hunks that are not going to be staged.
153
154       Ctrl-u in the diff editor reverts unstaged edits, and respects the  se‐
155       lection.   This is useful for selectively reverted edits from the work‐
156       tree.  This same hotkey reverts the entire file when used from the sta‐
157       tus tool.
158
159       Ctrl-s  in  the diff editor and status tools stages/unstages the entire
160       file.
161
162       You can see the available shortcuts by pressing  pressing  the  ?  key,
163       choosing  Help -> Keyboard shortcuts from the main menu, or by consult‐
164       ing the git cola keyboard shortcuts reference.
165

TOOLS

167       The git cola interface is composed of various cooperating tools.   Dou‐
168       ble-clicking  a tool opens it in its own subwindow.  Dragging it around
169       moves and places it within the main window.
170
171       Tools can be hidden and rearranged however you like.   git  cola  care‐
172       fully  remembers your window layout and restores it the next time it is
173       launched.
174
175       The Control-{1, 2, 3, …} hotkey gives focus to a specific tool.  A hid‐
176       den tool can be re-opened using the Tools menu or the Shift+Control-{1,
177       2, 3, …} shortcut keys.
178
179       The Diff editor can be focused with Ctrl-j.  the Status tool can be fo‐
180       cused with Ctrl-k.  the Commit tool can be focused with Ctrl-l.
181

STATUS

183       The Status tool provides a visual analog to the git status command.
184
185       Status  displays  files that are modified relative to the staging area,
186       staged for the next commit, unmerged files from an  in-progress  merge,
187       and files that are untracked to git.
188
189       These  are  the same categories one sees when running git status on the
190       command line.
191
192       You can navigate through the list of files  using  keyboard  arrows  as
193       well as the ergonomical and vim-like j and k shortcut keys.
194
195       There  are several convenient ways to interact with files in the Status
196       tool.
197
198       Selecting a file displays its diff in the Diff viewer.  Double-clicking
199       a file stages its contents, as does the the Ctrl-s shortcut key.
200
201       Ctrl-e  opens selected files in the configured editor, and Ctrl-d opens
202       selected files using git difftool
203
204       Additional actions can be performed using the right-click context menu.
205
206   Drag and Drop
207       Files can be dragged from the the Status tool onto other applications.
208
209       Some terminals will treat a drag with multiple files by separating them
210       with  newlines,  which  is less amenable for pasting command-line argu‐
211       ments.
212
213       To avoid this issue, hold down Alt / Option when dragging from the Sta‐
214       tus  tool.  The drag and drop payload will no longer contain local file
215       URLs – it will contain plain text that is amenable for use  on  a  com‐
216       mand-line.
217
218       Note:  if  drag and drop is not working and you are on Wayland then you
219       may need to export QT_QPA_PLATFORM=wayland in your environment.
220
221   Actions
222       Clicking the Staged folder shows a diffstat for the index.
223
224       Clicking the Modified folder shows a diffstat for the worktree.
225
226       Clicking individual files sends diffs to the Diff Display.
227
228       Double-clicking individual files adds and removes  their  content  from
229       the index.
230
231       Various  actions  are  available  through the right-click context menu.
232       Different actions are available depending a file’s status.
233
234   Stage Selected
235       Add to the staging area using git add Marks unmerged files as resolved.
236
237   Launch Editor
238       Launches the configured visual text editor
239
240   Launch Difftool
241       Visualize changes using git difftool.
242
243   Revert Unstaged Edits
244       Reverts unstaged content by checking out selected paths  from  the  in‐
245       dex/staging area
246
247   Revert Uncommitted Edits
248       Throws away uncommitted edits
249
250   Unstage Selected
251       Remove from the index/staging area with git reset
252
253   Launch Merge Tool
254       Resolve conflicts using git mergetool.
255
256   Delete File(s)
257       Delete untracked files from the filesystem.
258
259   Add to .gitignore
260       Adds untracked files to to the .gitignore file.
261

DIFF

263       The  diff  viewer/editor  displays diffs for selected files.  Additions
264       are shown in green and removals are displayed in light red.  Extraneous
265       whitespace is shown with a pure-red background.
266
267       Right-clicking  in  the diff provides access to additional actions that
268       use either the cursor location or text selection.
269
270       The “Copy Diff” action at Alt + Shift + C copies the selected lines  to
271       the  clipboard. The +, - and `` `` diff line prefixes are stripped from
272       each line when copying diffs using the “Copy Diff” action.
273
274   Staging content for commit
275       The @@ patterns denote a new diff hunk.  Selecting lines  of  diff  and
276       using  the  Stage  Selected  Lines command will stage just the selected
277       lines.  Clicking within a diff  hunk  and  selecting  Stage  Diff  Hunk
278       stages the entire patch diff hunk.
279
280       The corresponding opposite commands can be performed on staged files as
281       well, e.g. staged content can be selectively  removed  from  the  index
282       when we are viewing diffs for staged content.
283
284   Diff Against Commit (Diff Mode)
285       Diff Mode allows you to selectively unstage and revert edits from arbi‐
286       trary commits so that you can bring these edits back  into  your  work‐
287       tree.
288
289       You  can use the diff editor to unstage edits against arbitrary commits
290       by using the Diff > Against Commit... (Diff Mode) menu action.
291
292       You can exit Diff Mode by clicking on the red circle-slash icon on  the
293       Status  widget,  by  using the Diff > Exit Diff mode menu action, or by
294       clicking in an empty area in the Status tool.
295

COMMIT MESSAGE EDITOR

297       The commit message editor is a simple text widget for  entering  commit
298       messages.
299
300       You  can  navigate between the Subject and Extended description… fields
301       using the keyboard arrow keys.
302
303       Pressing enter when inside the Subject field jumps down to the extended
304       description field.
305
306       The  Options  button menu to the left of the subject field provides ac‐
307       cess to the additional actions.
308
309       The Ctrl+i keyboard shortcut adds a standard  “Signed-off-by:  “  line,
310       and Ctrl+Enter creates a new commit using the commit message and staged
311       content.
312
313   Sign Off
314       The Sign Off button adds a standard:
315
316          Signed-off-by: A. U. Thor <a.u.thor@example.com>
317
318       line to the bottom of the commit message.
319
320       Invoking this action is equivalent to passing the -s option to git com‐
321       mit.
322
323   Commit
324       The  commit button runs git commit.  The contents of the commit message
325       editor is provided as the commit message.
326
327       Only staged files are included in the commit – this is the same  behav‐
328       ior as running git commit on the command-line.
329
330   Line and Column Display
331       The  current line and column number is displayed by the editor.  E.g. a
332       5,0 display means that the cursor is located at line five, column zero.
333
334       The display changes colors when lines get too long.   Yellow  indicates
335       the  safe  boundary for sending patches to a mailing list while keeping
336       space for inline reply markers.
337
338       Orange indicates that the line is starting to run a bit long and should
339       break soon.
340
341       Red  indicates that the line is running up against the standard 80-col‐
342       umn limit for commit messages.
343
344       Keeping commit messages less than  76-characters  wide  is  encouraged.
345       git  log  is a great tool but long lines mess up its formatting for ev‐
346       eryone else, so please be mindful when writing commit messages.
347
348   Amend Last Commit
349       Clicking on Amend Last Commit makes git cola amend the previous  commit
350       instead of creating a new one.  git cola loads the previous commit mes‐
351       sage into the commit message editor when this option is selected.
352
353       The Status tool will display all of the changes for the amended commit.
354
355   Create Signed Commit
356       Tell git commit and git merge to sign commits using GPG.
357
358       Using this option is equivalent to passing the --gpg-sign option to git
359       commit and git merge.
360
361       This  option’s  default value can be configured using the cola.signcom‐
362       mits configuration variable.
363
364   Prepare Commit Message
365       The Commit -> Prepare Commit Message action or  Ctrl-Shift-Return  key‐
366       board shortcut runs the cola-prepare-commit-msg hook if it is available
367       in .git/hooks/.  This is a git cola-specific hook that takes  the  same
368       parameters as Git’s prepare-commit-msg hook
369
370       The  hook is passed the path to .git/GIT_COLA_MSG as the first argument
371       and the hook is expected to write an updated commit message  to  speci‐
372       fied path.  After running this action, the commit message editor is up‐
373       dated with the new commit message.
374
375       To override the default path to  this  hook  set  the  cola.prepareCom‐
376       mitMessageHook  git  config  variable  to  the path to the hook script.
377       This is useful if you would like to use a common hook across all repos‐
378       itories.
379

BRANCHES

381       The  Branches  tool  provides  a  visual  tree  to navigate through the
382       branches.  The tree has three main nodes Local  Branch,  Remote  Branch
383       and  Tags.  Branches are grouped by their name divided by the character
384       ‘/’.Ex:
385
386          branch/feature/foo
387          branch/feature/bar
388          branch/doe
389
390       Will produce:
391
392          branch
393              - doe
394              + feature
395                  - bar
396                  - foo
397
398       Current branch will display a star icon. If current branch has  commits
399       ahead/behind it will display an up/down arrow with its number.
400
401   Actions
402       Various  actions  are  available  through the right-click context menu.
403       Different actions are available depending of selected branch status.
404
405   Checkout
406       The checkout action runs git checkout [<branchname>].
407
408   Merge in current branch
409       The merge action runs git merge –no-commit [<branchname>].
410
411   Pull
412       The pull action runs git pull –no-ff [<remote>] [<branchname>].
413
414   Push
415       The push action runs git push [<remote>] [<branchname>].
416
417   Rename Branch
418       The rename branch action runs git branch -M [<branchname>].
419
420   Delete Branch
421       The delete branch branch action runs git branch -D [<branchname>].
422
423   Delete Remote Branch
424       The remote branch action runs git  push  –delete  [<remote>]  [<branch‐
425       name>].
426

APPLY PATCHES

428       Use the File -> Apply Patches menu item to begin applying patches.
429
430       Dragging  and  dropping  patches  onto  the git cola interface adds the
431       patches to the list of patches to apply using git am.
432
433       You can drag either a set of patches or a directory containing patches.
434       Patches  can  be  sorted  using in the interface and are applied in the
435       same order as is listed in the list.
436
437       When a directory is dropped git cola walks the directory tree in search
438       of  patches.   git  cola  sorts the list of patches after they have all
439       been found.  This allows you to control the order in which patches  are
440       applied by placing patchsets into alphanumerically-sorted directories.
441

CUSTOM WINDOW SETTINGS

443       git cola remembers modifications to the layout and arrangement of tools
444       within the git cola interface.  Changes are saved and restored  at  ap‐
445       plication shutdown/startup.
446
447       git  cola can be configured to not save custom layouts by unsetting the
448       Save Window Settings option in the git cola preferences.
449

DARK MODE AND WINDOW MANAGER THEMES

451       Git Cola contains a default theme which follows the  current  Qt  style
452       and  a  handful  of built-in color themes.  See cola.theme for more de‐
453       tails.
454
455       To use icons appropriate for a dark application  theme,  configure  git
456       config  --global  cola.icontheme  dark to use the dark icon theme.  See
457       cola.icontheme for more details.
458
459       On macOS, using the default  theme  will  automatically  inherit  “Dark
460       Mode”  color  themes  when configured via System Preferences.  You will
461       need to configure the dark icon theme as noted above when dark mode  is
462       enabled.
463
464       On Linux, you may want Qt to follow the Window manager theme by config‐
465       uring it to do so using the  qt5ct  Qt5  configuration  tool.   Install
466       qt5ct on Debian/Ubuntu systems to make this work.:
467
468          sudo apt install qt5ct
469
470       Once installed, update your ~/.bash_profile to activate qt5ct:
471
472          # Use the style configured using the qt5ct tool
473          export QT_QPA_PLATFORMTHEME=qt5ct
474
475       This  only  work  with the default theme.  The other themes replace the
476       color palette with theme-specific colors.
477
478       Some systems may require that you override QT_STYLE_OVERRIDE  in  order
479       to use a dark theme or to better interact with the Desktop environment.
480       Some systems provide a theme that you can install:
481
482          sudo apt-get install adwaita-qt
483
484       You can activate the theme using the following environment variable:
485
486          # Override the default theme to adwaita-dark
487          export QT_STYLE_OVERRIDE=adwaita-dark
488
489       QT_STYLE_OVERRIDE may already be set in your  Desktop  Environment,  so
490       check  that  variable  for  reference  if you get unexpected hangs when
491       launching git-cola or when the default theme does not follow the  desk‐
492       top’s theme on Linux.
493
494       If  you  don’t  want  to set this variable globally then you can set it
495       when launching cola from the command-line:
496
497          QT_STYLE_OVERRIDE=adwaita-dark git cola
498
499       The following is a user-contributed custom git-cola.desktop  file  that
500       can be used to launch Git Cola with these settings preset for you:
501
502          [Desktop Entry]
503          Name=Git Cola (dark)
504          Comment=The highly caffeinated Git GUI
505          TryExec=git-cola
506          Exec=env QT_STYLE_OVERRIDE=adwaita-dark git-cola --prompt --icon-theme dark
507          Icon=git-cola
508          StartupNotify=true
509          Terminal=false
510          Type=Application
511          Categories=Development;RevisionControl;
512          X-KDE-SubstituteUID=false
513
514       You may also want to customize the diff colors when using a dark theme:
515
516          git config --global cola.color.add 86c19f
517          git config --global cola.color.remove c07067
518
519       Please see #760 for more details.
520
521   Custom Themes
522       To create your own custom theme for Git Cola just create a QSS file and
523       put it in ~/.config/themes/. You can add as many  files  as  you  want.
524       Each  file  will become an option in Menu -> File -> Preferences -> Ap‐
525       pearance -> GUI theme.
526
527       Some examples can be found here Qt Style Sheets Examples.
528

CONFIGURATION VARIABLES

530       These variables can be set using git config or from the settings.
531
532   cola.autocompletepaths
533       Set to false to disable auto-completion of filenames in completion wid‐
534       gets.  This can speed up operations when working in large repositories.
535       Defaults to true.
536
537   cola.autoloadCommitTemplate
538       Set to true to automatically load the commit  template  in  the  commit
539       message editor If the commit.template variable has not been configured,
540       raise the corresponding error.  Defaults to false.
541
542   cola.blameviewer
543       The command used to blame files.  Defaults to git gui blame.
544
545   cola.blockcursor
546       Whether to use a “block” cursor in diff editors. The  block  cursor  is
547       easier  to  see  compared  to a line cursor. Set to false to use a thin
548       “line” cursor.  Defauls to true.
549
550   cola.browserdockable
551       Whether to create a dock widget with the  Browser  tool.   Defaults  to
552       false to speedup startup time.
553
554   cola.checkconflicts
555       Inspect  unmerged files for conflict markers before staging them.  This
556       feature helps prevent accidental staging of unresolved merge conflicts.
557       Defaults to true.
558
559   cola.defaultrepo
560       git  cola, when run outside of a Git repository, prompts the user for a
561       repository.  Set cola.defaultrepo to the path of a  Git  repository  to
562       make  git  cola  attempt  to use that repository before falling back to
563       prompting the user for a repository.
564
565   cola.dictionary
566       Specifies an additional dictionary for git cola to  use  in  its  spell
567       checker.   This should be configured to the path of a newline-separated
568       list of words.
569
570       By default, git cola searches for dict/words and dict/propernames  dic‐
571       tionary files in ~/.local/share and $XDG_DATA_DIRS.
572
573       If  $XDG_DATA_DIRS  is undefined or set to an empty value then /usr/lo‐
574       cal/share and /usr/share are searched for dictionary files.
575
576       Dictionary files are newline-separated and contain one word per line.
577
578   cola.expandtab
579       Expand tabs into spaces in the commit  message  editor.   When  set  to
580       true,  git cola will insert a configurable number of spaces when tab is
581       pressed.  The number of spaces is  determined  by  cola.tabwidth.   De‐
582       faults to false.
583
584   cola.gravatar
585       Use  the  gravatar.com service to lookup icons for author emails.  Gra‐
586       vatar icons work by sending an MD5 hash of an author’s  email  to  gra‐
587       vatar.com  when  requesting an icon. Warning: this feature can leak in‐
588       formation.  Network requests to gravatar.com are disabled when  set  to
589       false.  Defaults to true.
590
591   cola.fileattributes
592       Enables  per-file gitattributes encoding and binary file support.  This
593       tells git cola to honor the configured encoding when displaying and ap‐
594       plying diffs.
595
596       A  .gitattributes  file  can set the binary attribute in order to force
597       specific untracked paths to be treated as binary  files  when  diffing.
598       Binary files are displayed using a hexdump display.
599
600          # Treat *.exr files as binary files.
601          *.exr binary
602
603   cola.fontdiff
604       Specifies the font to use for git cola’s diff display.
605
606   cola.hidpi
607       Specifies  the  High  DPI displays scale factor. Set 0 to automatically
608       scaled.  Setting value between 0 and 1 is undefined.  This  option  re‐
609       quires  at  least Qt 5.6 to work.  See Qt QT_SCALE_FACTOR documentation
610       for more information.
611
612   cola.icontheme
613       Specifies the icon themes to use throughout git cola. The theme  speci‐
614       fied  must  be the name of the subdirectory containing the icons, which
615       in turn must be placed in the inside the main “icons” directory in  git
616       cola’s installation prefix.
617
618       If  unset,  or  set either “light” or “default”, then the default style
619       will be used.  If set to “dark” then the built-in  “dark”  icon  theme,
620       which is suitable for a dark window manager theme, will be used.
621
622       If  set to an absolute directory path then icons in that directory will
623       be used.  This value can be set to multiple values  using,  git  config
624       --add cola.icontheme $theme.
625
626       This  setting  can be overridden by the GIT_COLA_ICON_THEME environment
627       variable, which can specify multiple  themes  using  a  colon-separated
628       value.
629
630       The icon theme can also be specified by passing --icon-theme=<theme> on
631       the command line, once for each icon theme,  in  the  order  that  they
632       should  be  searched.   This  can  be  used to override a subset of the
633       icons, and fallback to the built-in icons for the remainder.
634
635   cola.imagediff.[extension]
636       Enable image diffs for the specified file extension.  For example, con‐
637       figuring  git  config –global cola.imagediff.svg false will disable use
638       of the visual image diff for .svg files in all repos until  is  is  ex‐
639       plicitly toggled on.  Defaults to true.
640
641   cola.inotify
642       Set  to  false  to  disable file system change monitoring.  Defaults to
643       true, but also requires either Linux with inotify  support  or  Windows
644       with  pywin32  installed  for file system change monitoring to actually
645       function.
646
647   cola.refreshonfocus
648       Set to true to automatically refresh when git cola  gains  focus.   De‐
649       faults  to  false  because this can cause a pause whenever switching to
650       git cola from another application.
651
652   cola.linebreak
653       Whether to automatically break long lines  while  editing  commit  mes‐
654       sages.  Defaults to true.  This setting is configured using the Prefer‐
655       ences dialog, but it can be toggled for one-off usage using the  commit
656       message editor’s options sub-menu.
657
658   cola.logdate
659       Set  the  default  date-time  mode  for  the DAG display. This value is
660       passed to git log –date=<format>.  See git log(1) for more details.
661
662   cola.maxrecent
663       git cola caps the number of recent repositories to avoid cluttering the
664       start and recent repositories menu.  The maximum number of repositories
665       to remember is controlled by cola.maxrecent and defaults to 8.
666
667   cola.mousezoom
668       Controls whether zooming text using Ctrl +  MouseWheel  scroll  is  en‐
669       abled.   Set  to  false to disable scrolling with the mouse wheel.  De‐
670       fauls to `true.
671
672   cola.dragencoding
673       git cola encodes paths dragged from its widgets into utf-16 when adding
674       them  to  the drag-and-drop mime data (specifically, the text/x-moz-url
675       entry).  utf-16 is used to make gnome-terminal see the right paths, but
676       other  terminals  may  expect a different encoding.  If you are using a
677       terminal that expects a modern encoding, e.g. terminator, then set this
678       value to utf-8.
679
680   cola.readsize
681       git cola avoids reading large binary untracked files.  The maximum size
682       to read is controlled by cola.readsize and defaults to 2048.
683
684   cola.resizebrowsercolumns
685       git cola will automatically resize the file browser columns as  folders
686       are expanded/collapsed when cola.resizebrowsercolumns is set to true.
687
688   cola.patchesdirectory
689       The default directory to use when exporting patches. Relative paths are
690       treated as being relative to the current repository. Absolute paths are
691       used as-is.  Defaults to patches.
692
693   cola.safemode
694       The  “Stage” button in the git cola Actions panel stages all files when
695       it is activated and no files are selected.  This can be problematic  if
696       it  is  accidentally triggered after carefully preparing the index with
697       staged changes.  “Safe Mode” is enabled  by  setting  cola.safemode  to
698       true.  When enabled, git cola will do nothing when “Stage” is activated
699       without a selection.  Defaults to false.
700
701   cola.savewindowsettings
702       git cola will remember its window settings when set  to  true.   Window
703       settings and X11 sessions are saved in $HOME/.config/git-cola.
704
705   cola.showpath
706       git cola displays the absolute path of the repository in the window ti‐
707       tle.  This can be disabled by setting cola.showpath to false.  Defaults
708       to true.
709
710   cola.signcommits
711       git cola will sign commits by default when set true. Defaults to false.
712       See the section below on setting up GPG for more details.
713
714   cola.startupmode
715       Control how the list of repositories is displayed in the  startup  dia‐
716       log.  Set to list to view the list of repositories as a list, or folder
717       to view the list of repositories as a collection of folder icons.   De‐
718       faults to list.
719
720   cola.statusindent
721       Set to true to indent files in the Status widget.  Files in the Staged,
722       Modified, etc. categories will be grouped  in  a  tree-like  structure.
723       Defaults to false.
724
725   cola.statusshowtotals
726       Set to true to display files counts in the Status widget’s category ti‐
727       tles.  Defaults to false.
728
729   cola.tabwidth
730       The number of columns occupied by a tab character.  Defaults to 8.
731
732   cola.terminal
733       The command to use when launching commands within a graphical terminal.
734
735       cola.terminal defaults to xterm -e when unset.   e.g.  when  opening  a
736       shell, git cola will run xterm -e $SHELL.
737
738       git  cola  has built-in support for xterm, gnome-terminal, konsole.  If
739       either gnome-terminal, xfce4-terminal, or konsole  are  installed  then
740       they will be preferred over xterm when cola.terminal is unset.
741
742       The table below shows the built-in values that are used for the respec‐
743       tive terminal.  You can force the use of a specific terminal by config‐
744       uring cola accordingly.
745
746   cola.terminalshellquote
747       Some  terminal  require that the command string get passed as a string.
748       For example, xfce4-terminal -e "git difftool" requires  shell  quoting,
749       whereas gnome-terminal -- git difftool does not.
750
751       You  should  not  need  to set this variable for the built-in terminals
752       cola knows about – it will behave correctly without configuration.  For
753       example,  when unconfigured, cola already knows that xfce4-terminal re‐
754       quires shell quoting.
755
756       This configuration variable is for  custom  terminals  outside  of  the
757       builtin set.  The table below shows the builtin configuration.
758
759              ┌───────────────┬───────────────────┬────────────────────┐
760              │Terminal       │ cola.terminal     cola.terminalshel‐ 
761              │               │                   │ lquote             
762              ├───────────────┼───────────────────┼────────────────────┤
763              │gnome-terminal │ gnome-terminal -- false              
764              ├───────────────┼───────────────────┼────────────────────┤
765              │konsole        │ konsole -e        false              
766              ├───────────────┼───────────────────┼────────────────────┤
767              │xfce4-terminal │ xfce4-terminal -e true               
768              ├───────────────┼───────────────────┼────────────────────┤
769              │xterm          │ xterm -e          false              
770              └───────────────┴───────────────────┴────────────────────┘
771
772   cola.textwidth
773       The number of columns used for line wrapping.  Tabs are counted accord‐
774       ing to cola.tabwidth.
775
776   cola.theme
777       Specifies the GUI theme to use throughout git cola. The theme specified
778       must be one of the following values:
779
780default – default Qt theme, may appear different on various systems
781
782flat-dark-blue
783
784flat-dark-green
785
786flat-dark-grey
787
788flat-dark-red
789
790flat-light-blue
791
792flat-light-green
793
794flat-light-grey
795
796flat-light-red
797
798       If unset, or set to an invalid value, then the default  style  will  be
799       used.  The  default theme is generated by Qt internal engine and should
800       look native but may look noticeably different on  different  platforms.
801       The  flat themes on the other hand should look similar (but not identi‐
802       cal) on various systems.
803
804       The GUI theme can also be specified by passing  --theme=<name>  on  the
805       command line.
806
807   cola.turbo
808       Set  to  true  to enable “turbo” mode.  “Turbo” mode disables some fea‐
809       tures that can slow things down when operating  on  huge  repositories.
810       “Turbo”  mode  will  skip  loading Git commit messages, author details,
811       status information, and commit date details in the File  Browser  tool.
812       Defaults to false.
813
814   cola.color.text
815       The default diff text color, in hexadecimal #RRGGBB notation.  Defaults
816       to “#030303”:
817
818          git config cola.color.text '#030303'
819
820   cola.color.add
821       The default diff “add” background color, in hexadecimal  #RRGGBB  nota‐
822       tion.  Defaults to “#d2ffe4”:
823
824          git config cola.color.add '#d2ffe4'
825
826   cola.color.remove
827       The  default diff “remove” background color, in hexadecimal #RRGGBB no‐
828       tation.  Defaults to “#fee0e4”:
829
830          git config cola.color.remove '#fee0e4'
831
832   cola.color.header
833       The default diff header text color, in  hexadecimal  #RRGGBB  notation.
834       Defaults to “#bbbbbb”:
835
836          git config cola.color.header '#bbbbbb'
837
838   core.hooksPath
839       Hooks  are  programs  you can place in a hooks directory to trigger ac‐
840       tions at certain points in git’s execution. Hooks that don’t  have  the
841       executable bit set are ignored.
842
843       By  default  the  hooks  directory  is  $GIT_DIR/hooks, but that can be
844       changed via the core.hooksPath configuration variable
845
846       The cola-prepare-commit-msg hook functionality and Cola’s Git  LFS  de‐
847       tection honors this configuration.
848
849       Please see the git hooks documentation for more details.
850
851   gui.diffcontext
852       The number of diff context lines to display.
853
854   gui.displayuntracked
855       git cola avoids showing untracked files when set to false.
856
857   gui.editor
858       The  default  text  editor to use is defined in gui.editor.  The config
859       variable overrides the VISUAL environment variable.  e.g. gvim -f -p.
860
861   gui.historybrowser
862       The history browser to use when visualizing history.  Defaults to gitk.
863
864   diff.tool
865       The default diff tool to use.
866
867   merge.tool
868       The default merge tool to use.
869
870   user.email
871       Your email address to be recorded in any newly created commits.  Can be
872       overridden   by   the  ‘GIT_AUTHOR_EMAIL’,  ‘GIT_COMMITTER_EMAIL’,  and
873       ‘EMAIL’ environment variables.
874
875   user.name
876       Your full name to be recorded in any newly  created  commits.   Can  be
877       overridden  by  the ‘GIT_AUTHOR_NAME’ and ‘GIT_COMMITTER_NAME’ environ‐
878       ment variables.
879

ENVIRONMENT VARIABLES

881   GIT_COLA_ICON_THEME
882       When set in the environment, GIT_COLA_ICON_THEME  overrides  the  theme
883       specified in the cola.icontheme configuration.  Read cola.icontheme for
884       more details.
885
886   GIT_COLA_SCALE
887       IMPORTANT:
888          GIT_COLA_SCALE should not be used with newer versions of Qt.
889
890          Set QT_AUTO_SCREEN_SCALE_FACTOR to 1 and Qt will automatically scale
891          the  interface  to  the correct size based on the display DPI.  This
892          option is also available by setting cola.hidpi configuration.
893
894          See the Qt High DPI documentation for more details.
895
896       git cola can be made to scale its interface for HiDPI  displays.   When
897       defined,  git cola will scale icons, radioboxes, and checkboxes accord‐
898       ing to the scale factor.  The default value is 1.  A good  value  is  2
899       for high-resolution displays.
900
901       Fonts are not scaled, as their size can already be set in the settings.
902
903   GIT_COLA_TRACE
904       When  defined, git cola logs git commands to stdout.  When set to full,
905       git cola also logs the exit status and output.  When set to trace,  git
906       cola logs to the Console widget.
907
908   VISUAL
909       Specifies the default editor to use.  This is ignored when the gui.edi‐
910       tor configuration variable is defined.
911

LANGUAGE SETTINGS

913       git cola automatically detects your language and presents some transla‐
914       tions  when  available.   This  may not be desired, or you may want git
915       cola to use a specific language.
916
917       You can make git cola use an alternative language by creating a ~/.con‐
918       fig/git-cola/language  file  containing the standard two-letter gettext
919       language code, e.g. “en”, “de”, “ja”, “zh”, etc.:
920
921          mkdir -p ~/.config/git-cola &&
922          echo en >~/.config/git-cola/language
923
924       Alternatively you may also use LANGUAGE environmental variable to  tem‐
925       porarily  change  git cola’s language just like any other gettext-based
926       program.  For example to temporarily change git cola’s language to Eng‐
927       lish:
928
929          LANGUAGE=en git cola
930
931       To  make git cola use the zh_TW translation with zh_HK, zh, and en as a
932       fallback.:
933
934          LANGUAGE=zh_TW:zh_HK:zh:en git cola
935

CUSTOM GUI ACTIONS

937       git cola allows you to define custom GUI actions by setting git  config
938       variables.  The “name” of the command appears in the “Actions” menu.
939
940   guitool.<name>.cmd
941       Specifies the shell command line to execute when the corresponding item
942       of the Tools menu is invoked. This option is mandatory for every  tool.
943       The  command is executed from the root of the working directory, and in
944       the environment it receives the name of the tool  as  GIT_GUITOOL,  the
945       name  of  the  currently selected file as FILENAME, and the name of the
946       current branch as CUR_BRANCH (if the head is  detached,  CUR_BRANCH  is
947       empty).
948
949       If  <name>  contains  slashes (/) then the leading part of the name, up
950       until the final slash, is treated like a path of submenus  under  which
951       the actions will be created.
952
953       For  example, configuring guitool.Commands/Util/echo.cmd creates a Com‐
954       mands menu inside the top-level Actions menu, a Util  menu  inside  the
955       Commands menu and an echo action inside the Commands submenu.
956
957   guitool.<name>.background
958       Run  the command in the background (similar to editing and difftool ac‐
959       tions).  This avoids blocking the GUI.  Setting background to true  im‐
960       plies noconsole and norescan.
961
962   guitool.<name>.needsfile
963       Run  the tool only if a diff is selected in the GUI. It guarantees that
964       FILENAME is not empty.
965
966   guitool.<name>.noconsole
967       Run the command silently, without creating a window to display its out‐
968       put.
969
970   guitool.<name>.norescan
971       Don’t  rescan the working directory for changes after the tool finishes
972       execution.
973
974   guitool.<name>.confirm
975       Show a confirmation dialog before actually running the tool.
976
977   guitool.<name>.argprompt
978       Request a string argument from the  user,  and  pass  it  to  the  tool
979       through the ARGS environment variable. Since requesting an argument im‐
980       plies confirmation, the confirm option has no effect  if  this  is  en‐
981       abled.  If  the  option  is  set  to true, yes, or 1, the dialog uses a
982       built-in generic prompt; otherwise the exact value of the  variable  is
983       used.
984
985   guitool.<name>.revprompt
986       Request a single valid revision from the user, and set the REVISION en‐
987       vironment variable. In other aspects this option  is  similar  to  arg‐
988       prompt, and can be used together with it.
989
990   guitool.<name>.revunmerged
991       Show  only unmerged branches in the revprompt subdialog. This is useful
992       for tools similar to merge or rebase, but not for things like  checkout
993       or reset.
994
995   guitool.<name>.title
996       Specifies the title to use for the prompt dialog.  Defaults to the tool
997       name.
998
999   guitool.<name>.prompt
1000       Specifies the general prompt string to display at the top of  the  dia‐
1001       log, before subsections for argprompt and revprompt.  The default value
1002       includes the actual command.
1003
1004   guitool.<name>.shortcut
1005       Specifies a keyboard shortcut for the custom tool.
1006
1007       The value must be a valid string understood by  the  QAction::setShort‐
1008       cut()                             API.                              See
1009       http://qt-project.org/doc/qt-4.8/qkeysequence.html#QKeySequence-2   for
1010       more details about the supported values.
1011
1012       Avoid  creating shortcuts that conflict with existing built-in git cola
1013       shortcuts.  Creating a conflict will  result  in  no  action  when  the
1014       shortcut is used.
1015

SETTING UP GPG FOR SIGNED COMMITS

1017       When  creating  signed  commits, gpg will attempt to read your password
1018       from the terminal from which git cola was launched.  The  way  to  make
1019       this  work smoothly is to use a GPG agent so that you can avoid needing
1020       to re-enter your password every time you commit.
1021
1022       This also gets you a graphical passphrase  prompt  instead  of  getting
1023       prompted for your password in the terminal.
1024
1025   Install gpg-agent and friends
1026       On Mac OS X, you may need to brew install gpg-agent and install the Mac
1027       GPG Suite.
1028
1029       On Linux use your package manager to install  gnupg2,  gnupg-agent  and
1030       pinentry-qt, e.g.:
1031
1032          sudo apt-get install gnupg2 gnupg-agent pinentry-qt
1033
1034       On  Linux, you should also configure Git so that it uses gpg2 (gnupg2),
1035       otherwise you will get errors mentioning, “unable  to  open  /dev/tty”.
1036       Set Git’s gpg.program to gpg2:
1037
1038          git config --global gpg.program gpg2
1039
1040   Configure gpg-agent and a pin-entry program
1041       On Mac OS X, edit ~/.gnupg/gpg.conf to include the line,:
1042
1043          use-agent
1044
1045       This  is  typically not needed on Linux, where gpg2 is used, as this is
1046       the default value when using gpg2.
1047
1048       Next, edit ~/.gnupg/gpg-agent.conf to contain a  pinentry-program  line
1049       pointing to the pinentry program for your platform.
1050
1051       The  following  example ~/.gnupg/gpg-agent.conf shows how to use pinen‐
1052       try-gtk-2 on Linux:
1053
1054          pinentry-program /usr/bin/pinentry-gtk-2
1055          default-cache-ttl 3600
1056
1057       This following example .gnupg/gpg-agent.conf shows how to use MacGPG2’s
1058       pinentry app on On Mac OS X:
1059
1060          pinentry-program /usr/local/MacGPG2/libexec/pinentry-mac.app/Contents/MacOS/pinentry-mac
1061          default-cache-ttl 3600
1062          enable-ssh-support
1063          use-standard-socket
1064
1065       Once  this  has been set up then you will need to reload your gpg-agent
1066       config:
1067
1068          echo RELOADAGENT | gpg-connect-agent
1069
1070       If you see the following output:
1071
1072          OK
1073
1074       Then the daemon is already running, and you do not  need  to  start  it
1075       yourself.
1076
1077       If  it  is  not  running, eval the output of gpg-agent --daemon in your
1078       shell prior to launching git cola.:
1079
1080          eval $(gpg-agent --daemon)
1081          git cola
1082

SHELL COMPLETIONS

1084       Git Cola provides shell completions for zsh and bash.   The  completion
1085       scripts and instructions are included in Git Cola’s contrib directory.
1086
1087Shell completion scripts
1088
1089Setup instructions
1090

WINDOWS NOTES

1092   Git Installation
1093       If  Git is installed in a custom location, e.g. not installed in C:/Git
1094       or Program Files, then the path to Git must be configured by creating a
1095       file  in  your home directory ~/.config/git-cola/git-bindir that points
1096       to your git installation.  e.g.:
1097
1098          C:/Tools/Git/bin
1099
1100   SSH Agents for Key-based Authentication
1101       You may need to setup ssh-agent in order to use SSH key-based authenti‐
1102       cation  on Windows. It has been reported that starting OpenSSH agent in
1103       Windows Services and adding the key using Powershell are  necessary  in
1104       order to get things working.
1105
1106       Please see the following links for more details.
1107
1108       https://stackoverflow.com/questions/18683092/how-to-run-ssh-add-on-windows
1109

FIPS SECURITY MODE

1111       FIPS Security Mode is available in newer versions of Python. These  in‐
1112       clude Python 3.9+ and the patched Python 3.6 used by CentOS8/RHEL8 (and
1113       possibly others).
1114
1115       Git Cola uses the hashlib.md5 function and adheres to the FIPS security
1116       mode  when  available. Git Cola does not use the MD5 value for security
1117       purposes.  MD5 is used  only  for  the  purposes  of  implementing  the
1118       cola/gravatar.py Gravatar client.
1119
1121   Git Cola’s Git Repository
1122       https://github.com/git-cola/git-cola/
1123
1124   Git Cola Homepage
1125       https://git-cola.github.io/
1126
1127   Mailing List
1128       https://groups.google.com/group/git-cola
1129

AUTHOR

1131       David Aguilar and contributors
1132
1134       2007-2023, David Aguilar and contributors
1135
1136
1137
1138
11394.3.2                            Sep 18, 2023                      GIT-COLA(1)
Impressum