Tag Archives: vcs

Git Cheat Sheet

This is just a short cheat sheet for useful Git commands.


Clone an existing repository

$ git clone ssh://user@domain.com/repo.git

Create a new local repository

$ git init

Local changes

Changes in your working directory

$ git status

Changes to tracked files

$ git diff

Add all current changes to the next commit

$ git add .

Add changes in <file> to the next commit

$ git add -p <file>

Commit all local changes in tracked files

$ git commit -a

Commit previously staged changes

$ git commit

Change the last commit

$ git commit --amend

Commit history

Show all commits, starting with the newest one

$ git log

Show changes over time for a specific file

$ git log -p <file>

Who changed what and when in <file>

$ git blame <file>

Branches & tags

List all existing branches

$ git branch

Switch HEAD branch

$ git checkout <branch>

Create a new branch based on your current HEAD

$ git branch <new_branch>

Create a new tracking branch based on a remote branch

$ git branch --track <new_branch> <remote_branch>

Delete a local branch

$ git branch -d <branch>

Mark the current commit with a tag

$ git tag <tag_name>

Update & publish

List all currently configured remotes

$ git remote -v

Show information about a remote

$ git remote show <remote>

Add new remote repository, named <remote>

$ git remote add <remote> <url>

Download all changes from <remote>, but don‘t integrate into HEAD

$ git fetch <remote>

Download changes and directly merge/integrate into HEAD

$ git pull <remote> <branch>

Publish local changes on a remote

$ git push <remote> <branch>

Delete a branch on the remote

$ git push <remote> :<branch>

Publish your tags

$ git push --tags

Merge & rebase

Merge <branch> into your current HEAD

$ git merge <branch>

Rebase your current HEAD onto <branch>
Do not rebase published commits!

$ git rebase <branch>

Abort a rebase

$ git rebase --abort

Continue a rebase after resolving conflicts

$ git rebase --continue

Use your configured merge tool to solve conflicts

$ git mergetool

Use your editor to manually solve conflicts and (after resolving) mark file as resolved

$ git add <resolved_file>
$ git rm <resolved_file>


Discard all local changes in your working directory

$ git reset --hard HEAD

Discard local changes in a specific file

$ git checkout HEAD <file>

Revert a commit (by producing a new commit with contrary changes)

$ git revert <commit>

Reset your HEAD pointer to a previous commit… and discard all changes since then

$ git reset --hard <commit>

…and preserve all changes as unstaged changes

$ git reset <commit>

…and preserve uncommitted local changes

$ git reset --keep <commit>



// CrashMAG

Managing /etc with etckeeper and git

The following was done on Fedora 14. Keep in mind that the Etckeeper and git specific actions will be similar on whatever platform you’re on.

Simply put, Etckeeper automatically revisions your /etc folder. Allows you to compare, commit and revert the changes that have been made. It’ll also allow you to restore files, should you be unlucky and delete them. Once etckeeper is installed, it will work together with your package manager and cron to do its work. To manage all this you’ll use the commands that your chosen VCS (Version Control System).

Etckeeper supports Git, Bazaar, Darcs and Mercurial.

Use of Etckeeper


yum install etckeeper


etckeeper init

Initial commit

etckeeper commit "initial commit"

Once this is done, etckeeper will make sure that every time you use the package manager (YUM) changes will be recorded. There are however a few git related commands you should be aware of.

Useful and necessary commands

Note: All of these commands assumes your current path is /etc

Viewing the Git log

git log

Check if there’s any modified files

git status

Complete status overview

git log --stat --summary

Revert a change

git revert 

View changes you haven’t commited yet

git diff

List different commits, each on one line.

git log --pretty=oneline

Revert to latest change-set, discarding changes

git reset --hard

Re-enter commit message

git commit --amend

Have at it folks!

// CrashMAG