Git Common Usage

Configuration

Configuring user information used across all local repositories

  • set a name that is identifiable for credit when review version history
    git config --global user.name “firstname lastname
  • set an email address that will be associated with each history marker
    git config --global user.email “valid-email
  • set automatic command line coloring for Git for easy reviewing
    git config --global color.ui auto

INIT

Configuring user information, initializing and cloning repositories

  • initialize an existing directory as a Git repository
    git init
  • retrieve an entire repository from a hosted location via URL
    git clone url

STAGE & SNAPSHOT

Working with snapshots and the Git staging area

  • show modified files in working directory, staged for your next commit
    git status
  • add a file as it looks now to your next commit (stage)
    git add file
  • unstage a file while retaining the changes in working directory
    git reset file
  • diff of what is changed but not staged
    git diff
  • diff of what is staged but not yet commited
    git diff --staged
  • commit your staged content as a new commit snapsho
    git commit -m “descriptive message

BRANCH & MERGE

Isolating work in branches, changing context, and integrating changes

  • list your branches. a * will appear next to the currently active branch
    git branch
  • create a new branch at the current commit
    git branch branch-name
  • switch to another branch and check it out into your working directory
    git checkout
  • merge the specified branch’s history into the current one
    git merge branch
  • show all commits in the current branch’s histor
    git log

INSPECT & COMPARE

Examining logs, diffs and object information

  • show the commit history for the currently active branch
    git log
  • show the commits on branchA that are not on branchB git log branchB..branchA
  • show the commits that changed file, even across renames
    git log --follow file
  • show the diff of what is in branchA that is not in branchB
    git diff branchB...branchA
  • show any object in Git in human-readable forma
    git show SHA

SHARE & UPDATE

Retrieving updates from another repository and updating local repos

  • add a git URL as an alias
    git remote add alias url
  • fetch down all the branches from that Git remote
    git fetch alias
  • merge a remote branch into your current branch to bring it up to date
    git merge alias/branch
  • Transmit local branch commits to the remote repository branch
    git push alias branch
  • fetch and merge any commits from the tracking remote branch
    git pull

TRACKING PATH CHANGES

Versioning file removes and path changes

  • delete the file from project and stage the removal for commit
    git rm file
  • change an existing file path and stage the move
    git mv existing-path new-path
  • show all commit logs with indication of any paths that moved
    git log --stat -M

REWRITE HISTORY

Rewriting branches, updating commits and clearing history

  • apply any commits of current branch ahead of specified one
    git rebase branch
  • clear staging area, rewrite working tree from specified commit
    git reset --hard commit

IGNORING PATTERNS

Preventing unintentional staging or commiting of files

  • Save a file with desired paterns as .gitignore with either direct string matches or wildcard globs
    logs/
    .notes
    pattern
    /
  • system wide ignore patern for all local repositories
    git config --global core.excludesfile file

TEMPORARY COMMITS

Temporarily store modified, tracked files in order to change branches

  • Save modified and staged changes
    git stash
  • list stack-order of stashed file changes
    git stash list
  • write working from top of stash stack
    git stash pop
  • discard the changes from top of stash stack
    git stash drop