A humble attempt to create a easy on the eye, skimable git cheat sheet. Please comment with requests, improvement suggestions or corrections.
Create or Initialize a repo from existing code or files
git init
Clone a current repo (into a folder with same name as repo)
git clone (repo_url)
Clone a repo into a specific folder name
git clone (repo_url) (folder_name)
Clone a repo into current directory (should be an empty directory)
git clone (repo_url) .
Create a remote repo named origin pointing at your Github repo (after you've already created the repo on Github) (used if you git init since the repo you created locally isn't linked to a remote repo yet)
git remote add origin https://github.com/username/(repo_name).git
Create a remote repo named origin pointing at your Github repo (using SSH url instead of HTTP url)
git remote add origin [email protected]:username/(repo_name).git
Show the names of the remote repositories you've set up
git remote
Show the names and URLs of the remote repositories
git remote -v
Remove a remote repository
git remote rm (remote_name)
Change the URL of the git remote
git remote set-url origin (git_url)
Push your changes to the origin
git push
Show the files changed
git status
Show changes to files compared to last commit
git diff
Show changes in single file compared to last commit
git diff (filename)
Show changes between two different commits.
git diff (commit_id)
Show history of changes
git log
Show who changed each line of a file and when Commit ID: This can be that giant long SHA-1 hash. You can call it many different ways. I usually just use the first 4 characters of the hash.
git blame (filename)
Go back to the last commit (will not delete new unstaged files)
git reset --hard
Undo/revert last commit AND create a new commit
git revert HEAD
Undo/revert a specific commit AND create a new commit
git revert (commit_id)
Stage all files (new, modified, and deleted)
git add -A
Stage new and modified files (not deleted)
git add .
Stage modified and deleted files (not new)
git add -u
Remove a file and untrack it
git rm (filename)
Untrack a file only. It will still exist. Usually you will add this file to .gitignore after rm Git Workflow Trees: How adding and committing moves files between the different git trees. Working Tree The "tree" that holds all our current files. Index (after adding/staging file) The "staging" area that holds files that need to be committed. HEAD Tree that represents the last commit.
git rm (filename) --cached
Commit the local changes that were staged
git commit -m "message"
Stage files (modified and deleted, not new) and commit
git commit -am "message"
Take the uncommitted work (modified tracked files and staged changes) and saves it
git stash
Show list of stashes
git stash list
Reapply the latest stashed contents
git stash apply
Reapply a specific stash. (stash id = stash@{2})
git stash apply (stash_id)
Drop a specific stash
git stash drop (stash_id)
Push your changes to the origin
git push
Push a branch to the origin
git push origin (local_branch_name)
Tag a version (ie v1.0). Useful for Github releases.
git tag (tag_name)
Get the latest changes from origin (don't merge)
git fetch
Get the latest changes from origin AND merge
git pull
Checkout a remote branch from origin into a local branch (naming the branch and switching to it)
git checkout -b (new_branch_name) origin/(branch_name)
Show all branches (local)
git branch
Show all branches (local and remote)
git branch -a
Create a branch from HEAD (latest)
git branch (branch_name)
Create a new branch and switch to it
git checkout -b (branch_name)
Switch to an already created branch
git checkout (branch_name)
Push a branch up to the origin (Github)
git push origin (branch_name)
Get a remote branch from origin into a local branch (naming the branch and switching to it)
git checkout -b (new_branch_name) origin/(branch_name)
Delete a branch locally and REMOTELY
git push origin --delete (branch_name)
Checkout a branch by name
git checkout master
Merge a specific branch into the current branch.
git merge (branch_name)
Take all the changes in one branch and replay them on another branch. Usually used in a feature branch. Rebase the master to the feature branch so you are testing your feature on the latest main code base. Then merge to the master.
git rebase (branch_name)
Merge/Cherry Pick one specific commit from another branch to your current branch.
git cherry-pick (commit_id)
_
Resources: