git-sh (1)
Leading comments
generated with Ronn/v0.4.1
http://github.com/rtomayko/ronn/
(The comments found at the beginning of the groff file "man1/git-sh.1".)
NAME
git-sh -- a git shell
SYNOPSIS
git-sh
DESCRIPTION
git-sh starts an interactive
bash(1) session modified for git-heavy
workflows. Typical usage is to change into the directory of a git work tree or
bare repository and run the
git-sh command to start an interactive shell
session.
Top-level command aliases are created for all core
git(1) subcommands, git-sh
builtin aliases (see
BUILTIN ALIASES), and git command aliases defined in
~/.gitconfig.
BUILTIN ALIASES
git-sh loads a set of standard aliases in addition to all core git commands.
The builtin aliases are overridden by aliases defined in the user or system
gitconfig files.
- a
-
git add
- b
-
git branch
- c
-
git checkout
- d
-
git diff
- f
-
git fetch --prune
- k
-
git cherry-pick
- l
-
git log --pretty=oneline --abbrev-commit
- n
-
git commit --verbose --amend
- r
-
git remote
- s
-
git commit --dry-run --short
- t
-
git diff --cached
The Staging Area
- a
-
git add
- aa
-
git add --update (mnemonic: "add all")
- stage
-
git add
- ap
-
git add --patch
- p
-
git diff --cached (mnemonic: "patch")
- ps
-
git diff --cached --stat (mnemonic: "patch stat")
- unstage
-
git reset HEAD
Commits and Commit History
- ci
-
git commit --verbose
- ca
-
git commit --verbose --all
- amend
-
git commit --verbose --amend
- n
-
git commit --verbose --amend
- k
-
git cherry-pick
- re
-
git rebase --interactive
- pop
-
git reset --soft HEAD^
- peek
-
git log -p --max-count=1
Fetching and Pulling
- f
-
git fetch
- pm
-
git pull (mnemonic: "pull merge")
- pr
-
git pull --rebase (mnemonic: "pull rebase")
Miscellaneous Commands
- d
-
git diff
- ds
-
git diff --stat (mnemonic: "diff stat")
- hard
-
git reset --hard
- soft
-
git reset --soft
- scrap
-
git checkout HEAD
CUSTOM ALIASES
Anything defined in the
[alias] section of the repository, user, or system git
config files are also available as top-level shell commands. Assuming a
~/.gitconfig that looked like this:
-
[alias]
ci = commit --verbose
ca = commit -a
d = diff
s = status
thanks = !git-thanks
-
\... you might then have the following shell session:
-
master!something> echo "stuff" >somefile
master!something*> s
M somefile
master!something*> d
diff --git a/somefile b/somefile
-- a/somefile
++ b/somefile
@@ -0,0 +1 @@
+ stuff
master!something*> ca -m "add stuff"
master!something> thanks HEAD
-
PROMPT
The default prompt shows the current branch, a bang (
!), and then the relative
path to the current working directory from the root of the work tree. If the
work tree includes modified files that have not yet been staged, a dirty status
indicator (
*) is also displayed.
The git-sh prompt includes ANSI colors when the git
color.ui option is set and
enabled. To enable git-sh's prompt colors explicitly, set the
color.sh config
value to
auto:
-
$ git config --global color.sh auto
-
Customize prompt colors by setting the color.sh.branch, color.sh.workdir,
and color.sh.dirty git config values:
-
$ git config --global color.sh.branch 'yellow reverse'
$ git config --global color.sh.workdir 'blue bold'
$ git config --global color.sh.dirty 'red'
-
See colors in git for information.
COMPLETION
Bash completion support is automatically enabled for all git built-in commands
and also for aliases defined in the user
~/.gitconfig file. The auto-completion
logic is smart enough to know an alias
d that expands to
git-diff should use
the same completion configuration as the
git-diff command.
The completion code is a slightly modified version of the git bash completion
script shipped with the core git distribution. The script is built into the
git-sh executable at compile time and need not be obtained or installed
separately.
CUSTOMIZING
Most
git-sh behavior can be configured by editing the user or system gitconfig
files (
~/.gitconfig and
/etc/gitconfig) either by hand or using
git-config(1). The
[alias] section is used to create basic command aliases.
The
/etc/gitshrc and
~/.gitshrc files are sourced (in that order)
immediately before the shell becomes interactive.
The
~/.bashrc file is sourced before either
/etc/gitshrc or
~/.gitshrc.
Any bash customizations defined there and not explicitly overridden by
git-sh
are also available.
ENVIRONMENT
- PS1
-
Set to the dynamic git-sh prompt. This can be customized in the ~/.gitshrc
or /etc/gitshrc files.
- GIT_DIR
-
Explicitly set the path to the git repository instead of assuming the
nearest .git path.
- GIT_WORK_TREE
-
Explicitly set the path to the root of the work tree instead of assuming
the nearest parent directory with a .git repository.
SEE ALSO
bash(1),
git(1),
git-config(1),
github.com/rtomayko/git-sh