Skip to content

Instantly share code, notes, and snippets.

@mab122
Created July 15, 2017 11:19
Show Gist options
  • Save mab122/b3cfecb3b8e6a415e5e304e3c3234926 to your computer and use it in GitHub Desktop.
Save mab122/b3cfecb3b8e6a415e5e304e3c3234926 to your computer and use it in GitHub Desktop.
Rules and tips for git VCS

https://github.com/arslanbilal/git-cheat-sheet


The seven rules of a great Git commit message

  1. Separate subject from body with a blank line
  2. Limit the subject line to 50 characters
  3. Capitalize the subject line
  4. Do not end the subject line with a period
  5. Use the imperative mood in the subject line
  6. Wrap the body at 72 characters
  7. Use the body to explain what and why vs. how

From How to Write a Git Commit Message ~chris.beams.io


A successful Git branching model

successful Git branching visualization

PDF to print and hang on a wall

From A successful Git branching model ~nvie


Cheatsheet

The Three States

Git Directory The .git directory is where Git stores the metadata and object database for the repository

Working Directory A copy of one version of the git project, taken from compressed database in the .git directory

Staging Area/Index File that stores information about what will next be committed into the git repository

Configure Tooling

git config --global user.name "[name]" Sets the name you want attached to your commit transactions

git config --global user.email "[email address]" Sets the email you want attached to your commit transactions

git config --global color.ui auto Enables helpful colorizations of command line input

Create Repositories

git init [project-name] Creates a new local repository with the specified name git clone [url] Downloads a project and its entire version history

Make Changes

git status Lists all new or modified files to be committed

git diff Shows file differences not yet staged

git add [file] Snapshots the file in preparation for versioning

git diff --staged Shows file differences between staging and the last file version

git reset [file] Unstages the file, but preserves its contents

git commit -m "[descriptive message]" Records the file snapshots permanently in version history

Group Changes

git branch Lists all local branches in the current repository

git branch [branch-name] Creates a new branch

git checkout [branch-name] Switches to the specified branch and updates the working directory

git merge [branch] Combines the specified branch's history into the current branch

git branch -d [branch-name] Deletes the specified branch

git remote add [remote-name] [url] Add a new remote git repository as a shortname

git remote -v Lists all remote git repositories

Refactor Filenames

git rm [file] Deletes the file from the working directory and stages the deletion

git rm --cached [file] Removes the file from version control but preserves the file locally

git mv [file-original] [file-renamed] Changes the file name and prepares it for commit

Suppress Tracking

*.log build/ temp-* A text file named .gitignore suppresses accidental versioning of files and paths matching the specified patterns

git ls-files --other --ignored --exclude-standard Lists all ignored files in this project

Save Fragments

git stash Temporarily stores all modified tracking files

git stash save [message] Save local modifications to a new stash

git stash pop Restores the most recently stashed files

git stash list Lists all stashed changesets

git stash show Show the changes recorded in the stash

git stash drop Discards the most recently stashed changeset

Review History

git log Lists version history for the current branch

git log --follow [file] Lists version history for a file, including renames

git diff [first-branch]...[second-branch] Shows content differences between two branches

git show [commit] Outputs metadata and content changes of the specified commit

Redo Commits

git reset [commit] Undoes all commits after [commit], preserving changes locally

git reset --hard [commit] Discards all history and changes back to the specified commit

Synchronize Changes

git fetch [bookmark] [branch] Downloads all history from the repository bookmark, optionally specifying branch

git merge [bookmark]/[branch] Combines bookmark's branch into current local branches

git push [alias] [branch] Uploads all local branch commits to GitHub

git push [alias] :[branch] Deletes remote branch

`git pull`` Downloads bookmark history and incorporates changes

git pull --rebase Downloads bookmark history and incorporates your changes on top of remote changes

git rebase --interactive --autosquash HEAD~N Squash N last commits

git cherry-pick -n <sha> Cherry-pick a commit

git revert -n <sha> Revert a commit

Debugging

git blame [file] Show what revision and author last modified each line of a file

git bisect Use binary search to find the commit that introduced a bug

From GitHub git cheatsheet


Maybe read/use git-tips

Maybe use git-extras

list awesome-git-addons

Everything here is essentialy this and less: https://github.com/arslanbilal/git-cheat-sheet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment