Configure Git client options:
# show config options
git config --list
# show all
git config --global --list
# show only global
git config --local --list
# show only local
# --global option impacts options at a global level
# --local option impacts options at a local level (.git/config)
# set username/email associated with client
git config --global user.email "joe@example.com"
git config --global user.name "Joe Jaz"
# add color syntax highlighting
git config --global color.status auto
git config --global color.branch auto
# set default pager and editor
git config --global core.editor vim
# or set the GIT_EDITOR environment variable
git config --global core.pager less
# or set the GIT_PAGER environment variable
# display an option value
git config
group.value
git config user.name
Start a new repository and import:
# In the root folder to add to version control:
git init
git init --bare
# creates a new repository (with no working copy)
git add .
# add everything in directory to repo
git commit -m '
initial commit'
Making commits:
# commit specific files
git commit file1 file2 -m '
comment'
# commit all 'added' files
git commit -a -m '
comment'
# change a commit message
git commit --amend -m '
New Message'
Create new repository by cloning existing one:
git clone --bare .
path_or_url_to_git_dir.git
Setting the remote repository (to push and pull from):
git remote add
short_name path_or_url_to_git_dir.git
git remote add origin git://github.com/imagescape/iscape-authlog.git
Show remote branches:
git ls-remote orig
git remote show orig
Show remote repositories available:
git remote
git remote -v
# show the url
git remote show origin
# show detail information about origin
Remove a remote repository:
git remove
repo_name
Rename a remote repository:
git rename
old_repo_name new_repo_name
Push and Pull from remote repository:
git push origin # push recent commits to remote repository called "origin"
git pull origin # pull updates from origin
Revert changes in working copy:
git clean -n
git clean --dry-run
Show file differences:
git diff
# show differences between working copy and any files staged for commit
git diff --staged
# compares staged changes with last commit
git diff --cached
# same as above for git older than 1.6.1
Show File/s History:
git log filename
# Show single file versions
# Show number of lines changed in file/s
git log -stat
filename # single file
git log -stat
# multiple files
# show log summaries on one line
git log --pretty=oneline
# Pre-defined format
git log --pretty=format:"%h - %cD (%an) %s"
# custom format (see below)
git log --pretty=format:"%h %s" --graph
Pre-Defined Pretty formats:
oneline
short
medium
full
fuller
email
raw
format:string # where string is
Format Strings
%H: commit hash
%h: abbreviated commit hash
%T: tree hash
%t: abbreviated tree hash
%P: parent hashes
%p: abbreviated parent hashes
%an: author name
%aN: author name (respecting .mailmap, see
git-shortlog(1) or
git-blame(1))
%ae: author email
%aE: author email (respecting .mailmap, see
git-shortlog(1) or
git-blame(1))
%ad: author date (format respects --date= option)
%aD: author date, RFC2822 style
%ar: author date, relative
%at: author date, UNIX timestamp
%ai: author date, ISO 8601 format
%cn: committer name
%cN: committer name (respecting .mailmap, see
git-shortlog(1) or
git-blame(1))
%ce: committer email
%cE: committer email (respecting .mailmap, see
git-shortlog(1) or
git-blame(1))
%cd: committer date
%cD: committer date, RFC2822 style
%cr: committer date, relative
%ct: committer date, UNIX timestamp
%ci: committer date, ISO 8601 format
%d: ref names, like the --decorate option of
git-log(1)
%e: encoding
%s: subject
%f: sanitized subject line, suitable for a filename
%b: body
%B: raw body (unwrapped subject and body)
%N: commit notes
%gD: reflog selector, e.g., refs/stash@{1}
%gd: shortened reflog selector, e.g., stash@{1}
%gs: reflog subject
%Cred: switch color to red
%Cgreen: switch color to green
%Cblue: switch color to blue
%Creset: reset color
%C(…): color specification, as described in color.branch.* config option
%m: left, right or boundary mark
%n: newline
%%: a raw %
%x00: print a byte from a hex code
%w([[,[,]]]): switch line wrapping, like the -w option of
git-shortlog(1).
Show git branches available:
git branch
Show all branches including remote branches:
git branch -a
Create new branch:
git branch new_branch
Change branches:
git checkout new_branch
Delete branch:
git branch -D new_branch
Merge branch into current copy:
git merge branch_to_merge_in
Resolve a Merge:
1) Edit file to resolve
2) git add conflict_file
3) git commit
Undo a Merge: # restores state to pre-merge
git reset --heard HEAD
~/.gitignore
[color]
diff = auto
status = auto
branch = auto
[user]
name = Joe Jaz
email = joe@example.com
[alias]
st = status
stu = status -uno
ci = commit
co = checkout
br = branch -v
tree = log --graph --pretty=oneline --abbrev-commit --decorate
[core]
editor = vim
pager = less