We're switching to git (on github.com) at the moment, and I really wanted to use it properly instead of just relying on the GIU clients. I decided to learn it using the command-line, and I found this excellent tutorial online which really helped me understand some of the fundamentals: http://www.sbf5.com/~cduan/technical/git/.

This article contains my basic cheat sheet for Git, which more or less follows the general workflow when using a git repo.

git init

Initialises a new git repository in the current folder.

git clone https://myrepo.com

Clones and initialises a remote git repository locally in the current folder - adds a remote repository reference named "origin".

git log

View log changes.

git add .

Recursively adds all changes to the repository.

git commit --dry-run

See what changes will be committed before actually running git commit.

git commit -m "My message"

Commits changes to the repository.

git branch

Get a list of local branches, with a star next to the current head.

git branch branch-namebase

Creates a new branch based on an existing branch e.g. git branch test-branch HEAD.

git checkout branch-name

Switches to a new branch and updates the local folder with the files from that branch.

git fetch origin

Retrieves remote changes and updates remote heads.

git pull origin

Pulls all remote changes (origin can be replaced with a URL, for example).

git pull --rebase origin

Pulls all remote changes but baselines them BEFORE your local changes, so your changes move on top of what everybody else has already contributed.

git push origin HEAD

Pushes all changes back to the repository origin.

git clone --branch xyz https://github.com/MyOrg/MyRepo.git

Clone a specific tag from a remote repo.

git mv MyFolder SubFolder

Moves MyFolder into SubFolder.

Edit (30 June 2015): To prevent yourself from having to enter credentials with each command-line entry, you can configure it to use a local store with the following command: git config credential.helper store - this will result in one request for user credentials and then no more.