The git command-line utility has plenty of inconsistencies http://steveko.wordpress.com/2012/02/24/10-things-i-hate-about-git/
A GUI like http://sourcetreeapp.com is often helpful, but staying on the command line usually quicker. This is a list of the commands I use most frequently, listed by functional category:
git status list which (unstaged) files have changed
git diff list (unstaged) changes to files
git log list recent commits
git add fn stage file
git commit -m 'message' commit file
git commit -am 'message' add/commit all changes from all tracked files (no untracked files) in one go
http://git-scm.com/book/en/Git-Tools-Rewriting-History
git reset filename unstage file
git commit --amend -m 'message' alter the last commit (add any staged files, new comment)
git reset --soft HEAD^ undo previous commit, put changes in staging
git reset --hard HEAD^ Undo last commit and all changes
git reset --hard HEAD^^ Undo two (^^) last commits and all changes
git checkout -- cats.html index.html Undo all changes that were made to files cats.html and index.html
git rebase --onto <commit-id>\^ <commit-id> HEAD remove specific commit from repository. the \ in ^ is just an escape char to make zsh play nice and is not necessary if using bash.
git remote add origin [email protected]:example/petshop.git add a remote repository
git push -u origin master push current local repo to remote. -u sets it to default for the future
git remote -v show show the available remote repositories that have been added
git remote show origin show local<->remote branch tracking and sync status
git remote -v update bring remote refs up to date (and -v show which branches were updated)
git pull checkout and merge remote changes in one go
git fetch origin update the local cache of the remote repository
git status -uno will tell you whether the branch you are tracking is ahead, behind or has diverged. If it says nothing, the local and remote are the same.
git show-branch *master will show you the commits in all of the branches whose names end in master (eg master and origin/master).
git log HEAD..origin/master --oneline shows commit messages
git diff HEAD..origin/master shows all changes on remote compared to local HEAD
git branch list currently existing branches
git branch [branchname] create new branch
git checkout branchname move to that branch
git checkout -b branchname create and checkout new branch in one go
git branch -d branchname remove branch
git checkout master; git merge branchname; conditions for fast-forward merge - nothing new on master between branch start/end points
git fetch origin``git branch -r list remote branches (after a fetch)
git push origin :branchname delete remote branch 'branchname'
git remote prune origin clean up deleted remote branches (let's say someone else deleted a branch on the remote)
git remote show origin show local<->remote branch tracking and sync status (duplicate info under "remote repositories")
git push heroku yourbranch:master simple form
git push heroku-staging staging:master (localBranchName:remoteBranchName)
git tag list all tags
git checkout v0.0.1 checkout code
git tag -a v0.0.3 -m 'Version 0.0.3' add new tag
git push --tags push new tags to remote
http://stackoverflow.com/questions/540535/managing-large-binary-files-with-git
http://git-annex.branchable.com/walkthrough/ #see ssh section
git annex add mybigfile
git commit -m 'add mybigfile'
git push myremote
git annex copy --to myremote mybigfile this command copies the actual content to myremote
git annex drop mybigfile remove content from local repo
git annex get mybigfile retrieve the content
git annex copy --from myremote mybigfilespecify the remote from which to get the file
I think this line:
git show remote originNeeds to be changed to:
git remote show origin