git cheatsheet
git is good
#Getting Started
#Create a Repository
From scratch -- Create a new local repository
git init [project name]
Download from an existing repository
git clone my_url
#Make a change
Show modified files in working directory, staged for your next commit
git status
Stages the file, ready for commit
git add [file]
Stage all changed files, ready for commit
git add .
Commit all staged files to versioned history
git commit -m "commit message"
Commit all your tracked files to versioned history
git commit -am "commit message"
Unstages file, keeping the file changes
git reset [file]
Revert everything to the last commit
git reset --hard
Diff of what is changed but not staged
git diff
Diff of what is staged but not yet commited
git diff --staged
Apply any commits of current branch ahead of specified one
git rebase [branch]
#Configuration
Set the name that will be attached to your commits and tags
git config --global user.name "name"
Set an email address that will be attached to your commits and tags
git config --global user.email "email"
Enable some colorization of Git output
git config --global color.ui auto
Edit the global configuration file in a text editor
git config --global --edit
#Working with Branches
List all local branches
git branch
List all branches, local and remote
git branch -av
Switch to a branch, my_branch, and update working directory
git checkout my_branch
Create a new branch called new_branch
git branch new_branch
Delete the branch called my_branch
git branch -d my_branch
Merge branchA into branchB
git checkout branchB
git merge branchA
Tag the current commit
git tag my_tag
#Observe your Repository
Show the commit history for the currently active branch
git log
Show the commits on branchA that are not on branchB
git log branchB..branchA
Show the commits that changed file, even across renames
git log --follow [file]
Show the diff of what is in branchA that is not in branchB
git diff branchB...branchA
Show any object in Git in human-readable format
git show [SHA]
#Synchronize
Fetch down all the branches from that Git remote
git fetch [alias]
Merge a remote branch into your current branch to bring it up to date
git merge [alias]/[branch]
Transmit local branch commits to the remote repository branch
git push [alias] [branch]
Fetch and merge any commits from the tracking remote branch
git pull
Merge just one specific commit from another branch to your current branch
git cherry-pick [commit_id]
#Remote
Add a git URL as an alias
git remote add [alias] [url]
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 repo name]
Change the URL of the git repo
git remote set-url origin [git_url]
#Temporary Commits
Save modified and staged changes
git stash
List stack-order of stashed file changes
git stash list
Write working from top of stash stack
git stash pop
Discard the changes from top of stash stack
git stash drop
#Tracking path Changes
Delete the file from project and stage the removal for commit
git rm [file]
Change an existing file path and stage the move
git mv [existing-path] [new-path]
Show all commit logs with indication of any paths that moved
git log --stat -M
#Ignoring Files
/logs/*
!logs/.gitkeep
/# Ignore Mac system files
.DS_store
# Ignore node_modules folder
node_modules
# Ignore SASS config files
.sass-cache
A .gitignore
file specifies intentionally untracked files that Git should ignore