Git tak po prostu (SFI version)

89
Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

description

These are the slides I've used during my talk on the "Academic It Festival" 2011 in Cracow. It's a very much extended and polished version of my previous talk. The slides are meant to be fun taken as interruptions of live coding (live comitting :-)) so that everyone understands what acutlly just happened with the commit history :-) The audience was exactly 211 people - yay! :-)

Transcript of Git tak po prostu (SFI version)

Page 1: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 2: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Tak.

Page 3: Git tak po prostu (SFI version)

Tak.Po prostu.

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 4: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

@ktosopl github.com/ktoso

blog.project13.pl

Page 5: Git tak po prostu (SFI version)

Masz pytanie?Nie czekaj do końca prezentacji!

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 6: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Poproszę...„Pytanie do publiczności“

Page 7: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Ważne słowa (-: WAŻNE :-)

System kontroli wersjiScentralizowany czy Zdecentralizowany

(CVCS vs DVCS)

ZespółWspółpraca

ZmianyDiff („różnice“)

Integracja zmian

Słowniczek:Commit

SnapshotKonfliktBranch

Page 8: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

git-ninijitsu

Config

InitClone

Add / StageResetStatusCommit

LogGitk

Git gui

RebaseAdd --patch

GrepBisectBlame

Gc

Format-patch

Svn

FetchPull

Push

Daemon

Stash

BranchCheckoutMerge

Stash

Diff

Page 9: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 10: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Centralized SCM World

Jedno jedyne repozytorium„One to Rule Them All“

Page 11: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Svn UDAJE branche i tagi

/tags/.../branches/.../trunk/...

Page 12: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Helo (Git) World!

Page 13: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 14: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Bardzo skomplikowany setup ;-)

Git init .

(Przyjrzymy się strukturze plików git za moment „na żywo“)

Page 15: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

SCM Wars: Attack of the clones

Git clone file:///home/ktoso/coding/intellij

Git clone ssh://ktoso@dynames/repository

Git clone http://git.project13.pl/pub/repository

Git clone https://git.project13.pl/pub/repository

Git clone git://git.project13.pl/git/repository.git

Page 16: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

./git/index AKA „Staging Area“

Page 17: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

./git/index AKA „Staging Area“

Page 18: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

./git/index AKA „Staging Area“

=

indeks ponieważ istnieje plik .git/indexstaging area ponieważ idealnie obrazuje jego działanie

Page 19: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Commit jest LOKALNY

Page 20: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Commit jest LOKALNY

Page 21: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Commit thyself, Lancelot!

Page 22: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Local (internal details) workflow

Page 23: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Local (internal details) workflow

Page 24: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Local (internal details) workflow

Page 25: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Local (internal details) workflow

Page 26: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Local (internal details) workflow

Page 27: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Local (internal details) workflow

Page 28: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

ALL Git Objects on 1 slide!

Page 29: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Nie ma treści = nie ma nic.

Page 30: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 31: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

BRANCH + MERGE

Page 32: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

BRANCH + MERGE

Page 33: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

BRANCH + MERGE

Page 34: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

BRANCH + MERGE

Page 35: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Przykład„Real Life“

Page 36: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Przykład„Real Life“

Page 37: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Przykład„Real Life“

Page 38: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Przykład„Real Life“

Page 39: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

So many heads...?

Page 40: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

There's just one .git/HEAD$ Git branch* fire snake

master

Page 41: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

There's just one .git/HEAD

Git checkout fire

Page 42: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

There's just one .git/HEAD$ Git branch master* snakefire

Page 43: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Nowy branch = trywialne

Git branch niebieski

Page 44: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Nowy branch = trywialne

Git branch niebieski

Git checkout niebieski

Page 45: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Nowy branch, trywialniej

Git checkout -b niebieski

Page 46: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git merge zielony

Page 47: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git merge zielony

Page 48: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git merge zielony

Page 49: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Fast Forward merge strategy

Page 50: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git merge zielony --no-ff

Page 51: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git branch -d zielony

Git branch -d

Page 52: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

STASH

Page 53: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 54: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

OCTOPUS

Page 55: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

OCTOPUS (Merge Engine)

Git checkout masterGit merge feature-45 fix

Page 56: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Shall I push or shall I pull..?

Page 57: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Introducing: the buttler (server)

Git serve

Page 58: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Introducing: the buttler (server)

Git serve

git daemon \--reuseaddr \--verbose \--base-path=. \--export-all \./.git

Git config alias.serve „...“

Page 59: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Introducing: the buttler (server)

Git serve

Git clone git://buttler/repo.git

Page 60: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Introducing: the buttler (server)

Git serve

Page 61: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

The good old way - Patches

Page 62: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

The good old way - Patches

Page 63: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

The good old way - Patches

Page 64: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Typical Open Source

Flow

Page 65: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Typical Open Source

Flow

Page 66: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Typical Open Source

Flow

Page 67: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Typical Open Source

Flow

Page 68: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Typical Open Source

Flow

Page 69: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Page 70: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

git rebase

Page 71: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git rebase --interactive HEAD^^

Page 72: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git rebase --interactive HEAD^^

Page 73: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Rebase = „Zmiana bazy“

Page 74: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Rebase = „Zmiana bazy“

Page 75: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Rebase = „Zmiana bazy“

Page 76: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Rebase = „Zmiana bazy“

Page 77: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Rebase = Rewind + Replay

Page 78: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

hs4f7z569sp

Git cherry-pick hs4f7z

Page 79: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git cherry-pick hs4f7z

hs4f7z569sp

Page 80: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

TAG

Git tag release-1.0

Page 81: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

TAG

Git tag release-1.0 =

svn copy http://svn.example.com/repos/calc/trunk \ http://svn.example.com/repos/calc/tags/release-1.0 \ -m "Tagging the 1.0 release of the 'calc' project."

Page 82: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git svn ...

Page 83: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git svn ...

Page 84: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git svn ...

Page 85: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Git svn ...

Page 86: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Poznaliśmy również podstawy:

Bazaar

Page 87: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Final bunch of links:Best Resources:● Git-scm.com● Git.wiki.kernel.org● Progit.org (Creative Commons Book)● Gitref.org● ...blogs!

Public OpenSource (or $$$ private) hosting:● Github.com● Sourceforge.net● Assembla.com● Gitorious.org● Gitenterprise.com

Private Hosting:● Google -> gitosis● Google -> gitolite

Other:● Google -> git refcard● Google -> successful git workflow

Page 88: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

ありがとうありがとう(DZIĘKUJĘ)(DZIĘKUJĘ)

ZA UWAGĘ!ZA UWAGĘ!

Page 89: Git tak po prostu (SFI version)

Konrad „Ktoso“ Malawski – [email protected] - @ktosopl – blog.project13.pl - SFI 2011 - 11.03.2011

Pytanie Bonusowe...

git init .touch memkdir foldergit stage .git commit -am 'Initial commit' tree .git/objects/fortune > anything.txtgit add .git commit -am \'How many git objects exist now ?'

.org