Useful git commands
Just a collection of git commands I use on a daily basis:
# Clone a repository (using https)
git clone https://github.com/[some_user]/[some_repo].git
# Add your fork as remote (using ssh)
git remote add my_repo git@github.com:/[username]/[some_repo].git
# If working with submodules don't forgot to update
git submodules update --init
# Update information about remote branches
git fetch --all
# List remote branches and tags
git ls-remote [repo]
# Checkout (-t : follow upstream branch)
git checkout -t [repo]/[branch]
# Pull the latest changes from the remote upstream branch
git pull
# List local branches
git branch
# Checkout local branch
git checkout [branch]
# Create a new branch
git checkout -b [branch]
# Push current branch
git push [repo]
# Delete branch
git branch -d [branch]
# Rename branch ([old] optional, if omitted = current branch)
git branch -m [old] [new]
# Show commits
git log
# Show the changes of a specific commit
git show [sha]
# Check which files have been changed
git status
# Check the changes ([file] optional)
git diff [file]
# Add changes (add everything: [file] = . )
git add [file]
# commit
git commit
# Edit last commit
git commit --amend
# Reset branch to a specific commit
git reset --hard [sha]
# If that was a mistake and you have to get back to a commit
# later than the resetted commit, find the sha with
git reflog # then followed but git reset
# Cherry pick a specific commit (e.g. from another branch)
git cherry-pick [sha]
# Rebase, e.g. you branched off master, then master changed:
git checkout master
git pull
git checkout [previous branch]
git rebase master
# Merge other branch into current branch
git merge [branch]
# Tag and sign a version
git tag -s -a v1.2.3 -m "Tag version 1.2.3"
git push origin v1.2.3
# Delete tag
git push --delete origin v1.2.3
git tag -d v1.2.3