Slide 1

Slide 1 text

git Ben Scheirman

Slide 2

Slide 2 text

what scm tool are you using?

Slide 3

Slide 3 text

what scm tool are you using? Subversion? TFS? VSS? CVS? Perforce? git? hg? MKS? FSA?

Slide 4

Slide 4 text

TFS

Slide 5

Slide 5 text

TFS

Slide 6

Slide 6 text

TFS Team Frustration Server?

Slide 7

Slide 7 text

TFS

Slide 8

Slide 8 text

TFS Totally Fucking Stupid?

Slide 9

Slide 9 text

TFS

Slide 10

Slide 10 text

TFS Tempt Fate & Suffer?

Slide 11

Slide 11 text

all kidding aside... I don't love git because it's better than TFS...

Slide 12

Slide 12 text

I love git because it's freaking awesome.

Slide 13

Slide 13 text

stop me if this sounds familiar

Slide 14

Slide 14 text

learning git changed the way I develop software

Slide 15

Slide 15 text

why git?

Slide 16

Slide 16 text

git is fast

Slide 17

Slide 17 text

git is distributed

Slide 18

Slide 18 text

git is forgiving $ git commit --amend

Slide 19

Slide 19 text

git probably matches your workflow

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

git demo initialization staging files committing remotes push / pull

Slide 22

Slide 22 text

Branching

Slide 23

Slide 23 text

Branching Don't believe the FUD... branching is EASY

Slide 24

Slide 24 text

Branching is lightweight

Slide 25

Slide 25 text

Branching is lightweight

Slide 26

Slide 26 text

Branching is lightweight

Slide 27

Slide 27 text

Branching is lightweight

Slide 28

Slide 28 text

Branching is lightweight

Slide 29

Slide 29 text

merge versus rebase

Slide 30

Slide 30 text

merge versus rebase Merge

Slide 31

Slide 31 text

merge versus rebase Merge Rebase

Slide 32

Slide 32 text

Never rebase a public branch

Slide 33

Slide 33 text

git demo branch merge rebase

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Feature Branches a.k.a "topic" branches

Slide 36

Slide 36 text

Merge (no fast-forward)

Slide 37

Slide 37 text

Hotfixes

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

contribute to open source projects $ git clone [email protected]/username/project.git Fork & Clone the project $ git remote add upstream http://github.com/user/project.git Add a remote called "upstream"

Slide 40

Slide 40 text

Thank You Credits ‣http://whygitisbetterthanx.com ‣http://nvie.com/posts/a-successful-git- branching-model/ ‣http://progit.org/