Creating Repositories
create new repository in current directory:
git init
clone a remote repository:
git clone [url]
for example cloning the entire jquery repo locally:
git clone https://github.com/jquery/jquery
Branches and Tags
List all existing branches with the latest commit comment:
git branch –av
Switch your HEAD to 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 checkout --track [remote/branch]
for example track the remote branch named feature-branch-foo:
git checkout --track origin/feature-branch-foo
Delete a local branch:
git branch -d [branch]
Tag the current commit:
git tag [tag-name]
Local Changes
List all new or modified files - showing which are to staged to be commited and which are not :
git status
View changes between staged files and unstaged changes in files:
git diff
View changes between staged files and the latest committed version:
git diff --cached
only one file add the file name:
git diff --cached [file]
Add all current changes to the next commit:
git add [file]
Remove a file from the next commit:
git rm [file]
Add some changes in < file> to the next commit:
Watch these video’s for a demo of the power of git add -p - http://johnkary.net/blog/git-add-p-the-most-powerful-git-feature-youre-not-using-yet/:
git add -p [file]
Commit all local changes in tracked files:
git commit –a
git commit -am "An inline commit message"
Commit previously staged changes:
git commit
git commit -m "An inline commit message"
Unstages the file, but preserve its contents:
git reset [file]
Commit History
Show all commits, starting from the latest :
git log
Show changes over time for a specific file :
git log -p [file]
Show who changed each line in a file, when it was changed and the commit id:
git blame -c [file]
Update and Publish
List all remotes :
git remote -v
Add a new remote at [url] with the given local name:
git remote add [localname] [url]
Download all changes from a remote, but don‘t integrate into them locally:
git fetch [remote]
Download all remote changes and merge them locally:
git pull [remote] [branch]
Publish local changes to a remote :
git push [remote] [branch]
Delete a branch on the remote :
git branch -dr [remote/branch]
Publish your tags to a remote:
git push --tags
Merge & Rebase
Merge [branch] into your current HEAD :
git merge [branch]
Rebase your current HEAD onto [branch]:
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 as resolved :
git add <resolved- file>
git rm <resolved- file>
Undo
Discard all local changes and start working on the current branch from the last commit:
git reset --hard HEAD
Discard local changes to a specific file :
git checkout HEAD [file]
Revert a commit by making a new commit which reverses the given [commit]:
git revert [commit]
Reset your current branch to a previous commit and discard all changes since then :
git reset --hard [commit]
Reset your current branch to a previous commit and preserve all changes as unstaged changes :
git reset [commit]
Reset your current branch to a previous commit and preserve staged local changes :
git reset --keep [commit]