Working tree All uncommited changes
Staging area Uncommited changes you've told git you want to include in a commit
Creating branches
git checkout BRANCHNAME
Creating a branch and checking it out
git checkout -b BRANCHNAME
All changes in your working tree
git diff
All staged changes
git diff --cached
Stage everything in working tree
git add .
Stage all changes in one file
git add path/to/file.txt
Stage all changes in multiple files
git add path/to/file.txt path/to/another.txt
Interactively stage changes piece by piece
git add -p
Commit everything that you've staged
git commit -m "A meaningful message about what you're commiting"
Stage everything in your working tree and commit it
git commit -am "A meaningful message about what you're commiting"
git push origin BRANCHNAME