Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quick Git Talk

Quick Git Talk

Randall Hunt

July 16, 2014
Tweet

More Decks by Randall Hunt

Other Decks in Technology

Transcript

  1. Vocabulary • Repository -- Holds the history of all changes

    • Commit -- A point in time snapshot of your repo • Reference -- Something that makes it so you don't have to remember a 40 hexadecimal digit sha1 hash • Branch -- A pointer to the head of a group of commits • Remote -- A thing you push to and pull from • Pull Request -- How you get your code reviewed (unless you're on kernel) • Github -- Magic
  2. 1. Fork a project 2. Clone your fork 3. Branch

    4. Edit some files 5. Commit 6. Repeat 4 and 5 until feature/bug is complete 7. REBASE to create a history that I won't mind reading through 8. Pull any changes that have happened on non-forked master in the interim and rebase on top of those if you want a linear history otherwise do nothing for this step 9. Open pull request from your branch on your fork into the canonical repo's master branch 10. Profit
  3. How To Branch • git checkout -b improvement/unicorns • git

    branch bug/voldemort && git checkout bug/voldemort
  4. How To Commit • Edit Some Stuff • git add

    -p and git add (DO NOT GIT ADD * or .) • Review what is in staging with git diff --cached and git status • git commit
  5. Commit Messages • Start with bug number and short description

    <70 characters • Longer description after one blank line
  6. Index == Staging • STAGE EVERYTHING • Save time later

    by staging only some logical changes now
  7. Refs • N^ goes up N parents (HEAD^, HEAD^100) •

    ~ selects merge parents (HEAD~, HEAD~2) • Mix and match (don't actually though) • HEAD is hard coded and always points to the current head of whatever branch you have checked out • Almost everything can be treated as a ref
  8. • Blob (zlib compressed bytes representing a file) • Tree

    (a tree where the leaf nodes are blobs) • Commit (a pointer to: a tree, n parent commits) • Tag (a pointer to a commit) • (IGNORE THIS) something something packfiles
  9. Find Lost Stuff • git reflog • git fsck [--lost-found]

    • git log -G • git branch --contains SHA-1
  10. tig

  11. Config • git config --global help.autocorrect 1 • git config

    --global rerere.enabled 1 • git config --global color.ui 1 • git diff --word-diff