Table of Contents

git

Git is just your ordinary overly complicated* version control system. I'm really great at doing stuff with git, especially things I didn't intend! :)

Here's a useful collection of ways to get yourself out of your own self-created git jams.

How To Undo Stuff

Revert a single file

git status

And near the top of the output are instructions.

Revert changes made to local copy

Warning: there is no confirmation prompt! Don't type this unless you really mean bring your local copy back in sync with the current branch!

git checkout .

Unstage a staged file or directory

From stackoverflow.

  git reset <path-to-file-or-dir>

Change a previous commit

If you haven't pushed it yet, it is possible to make a new commit that is automatically merged with the previous commit. Stage the changes you need to add to the previous commit with git add first, then:

git commit --amend

This command will open $EDITOR for editing of the commit message and then merge the staged changes with the previous commit. To avoid editing the commit message, include –no-edit.

Undo the previous commit

git commit -m "Something terribly misguided"            
# oops! 

# this line reverts the previous commit 
git reset HEAD~                                       

Other Useful Notes

Get a diff including all the changes between two revisions

git diff <rev1>^..<rev2>

Merge Squash

git merge --squash <other_branch>

Applies all of the changes made to <other_branch> to the working copy as a single set of staged changes which is ready to be committed. Use git commit as per usual.

List Remote Branches

After initially cloning a repository, git is only aware of the the default branch, which is usually master.

$git branch
* master

Use -a to list remote branches:

$git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/release

Misc Tasks

Show only the files that are modified as a commit

This removes the diff lines from the show command (+/- lines):

$git show <hash> --name-only

*Compared to other version control systems.