Loading deck

Git for ages 4 and up

Radim Klaška

Morpht.com & Drupal.cz

Git for ages 4 and up

Michael G. Schwern

Linux.conf.au 2013

Who are you?

I've seen git

  • github.com
  • cgit.drupalcode.org
  • Looked at older versions

I've used git

  • maybe used some GUI
  • got the code
  • made changes
  • commited changes
  • shared them with coworkers

I fixed a problem

  • helped others
  • resolved git conflict
  • worked with multiple remotes
  • probably prefer CLI

Why is it so compliacted

  • written by Linus Torvalds in 3 weeks
  • then maintained also by other Linux kernel developers
  • you need to understand the internals
  • really good and simple

These should sound familiar

init

clone

 

add

commit

 

branch

merge

status

diff

log

 

checkout

 

pull

push

Shortcuts

radimklaska@rku:~ $ cat ~/.gitconfig 
[user]
	name = Radim Klaska
	email = radim@klaska.net
[push]
	default = simple
[alias]
	st = status
	co = checkout
	mr = "merge --no-ff"
	un = "reset --soft HEAD~"
	unn = "reset --hard HEAD"
	lg = "log --graph --full-history --all
              --pretty=format:'%C(yellow)%h %Cgreen%cd
              %Creset - %C(auto)%d%Creset %s %C(cyan)
              [%aN %C(yellow)%ae%C(cyan)]%Creset'
              --date=format:'%Y-%m-%d %H:%M:%S'"

New repo

git init

git add

git commit

Second commit

Get existing repo

git clone [adress]

Seems simple

but we've seen a lot

Complete repo

Binary objects (files)

Staging area

  • = "index"
  • = "cache"

Commit object

  • commit id (= check sum)
  • check sum - depends on content
  • contains things like
    • references to "files"
    • references to parent commits
    • info about author
    • log
    • timestamps
  • every id is unique

Reference

  • HEAD
  • master

What does it mean?

History

Branching

Done. Simple.

git checkout

Merging

Fast forward merge

Merging

the dark side

Merge conflicts

Conflict resolved

Also, not a fast forward merge

--no-ff

Remotes

Remotes

Keep your fork up to date

Tips

Simple workflow

Oh shit git!

Time traveling is fun

(alone)

Remotes & team workflow

Next time ;-)

Where to go next

Advanced GIT for Developers

by Lorna Jane Mitchell

Advanced Git:
Graphs, Hashes, and Compression, Oh My!
by Matthew McCullough

Questions?

Thank you!