Git – version control, the best thing since sliced bread. Right? I can’t imagine my life without a version control system in place. I know millions work with Git these days so decided to write up a simple post on some useful commands.
I won’t go into how it all works, well maybe just a little bit. So basically git tracks references to changes from the main branch such as ‘master’.
List of basic commands:
git diff
# show diff of all changed and uncommitted files.
git add <file>
# Stage changes from a file.
git diff --cached
# Show diff of all staged files.
git checkout <file>
# Revert back to original content from the branch you are on.
git branch
# show list of branches available locally.
git branch <branch name>
# Create a branch
git branch -d <branch name
# Delete a local branch (safe)
git branch -D <branch name
# Delete a local branch (unsafe)
git checkout <branch>
# Switch to another branch.
git commit -m <commit msg>
# Commit your changes to the branch.
git reset <file>
# Reset/unstage change.
git push
# push changes to the remote repo. (create branch if not already exists)
git pull
# pull changes from the remote repo.
git merge <branch>
# Merge a branch into the branch you’re on.
git tag <tag version>
# Create a hard reference to your commit hash represented by a tag.
git push --tags
# Push all tags to remote repository.
More advanced commands:
git checkout <branch> <file>
# Checkout changes for file from another branch.
git reset --hard HEAD~1
# Revert a local merge. (if its the last thing you’ve done)
git push origin <branch> --force
# Force re-write of commit history as per your local version.
git rebase <commit hash>
# Rewrite commit history up until the commit hash provided.
git rebase --abort|--skip
# Abort or skip the rebase change.
git branch -u origin/<branch>
# Set tracking to a remote branch. (if exits)
git commit -am "<commit msg">
# Add files and commit changes in one go.
git stash
# Stash uncommitted changes temporarily.
git stash apply
# Re-apply the stashed changes.
git stash list
# Show list of stashed changes.
git diff <branch> <file>
# Show diff of file against another branch.
There are lots more! But I have found that these cover the bulk of my work!