m.mozūras - git

Post on 19-Jan-2015

765 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

gitor: how I learned to stop

worrying and love source control

why you should

care

Traditional version control systems have deficiencies

Subversion, Perforce, CVS, TFS...

OH, THE PAIN!SLOWTREE CONFLICTSMERGING IS CHALLENGINGBRANCHES ARE JUST COPIES

using svn

using git

is awesomegit

It’s distributed!Distributed Version Control System

Every repository is equal.

You can work offline.

Fast as lightning.

add status diff log commit branch

git mercurial bazaar

Very efficient.

git clone rails - 53 seconds40mb, 2356 files, 29045 commits

Great branching and merging.

Any workflow you want, you got it...

Shared repository

Blessed repositoryLinus Torvalds

Lieutenants

Developers

how to install

Linux: apt-get install git-coreMac OS X: brew install gitWindows: chocolatey install msysgit

Download from git-scm.com

getting

started

git config --global user.name ...git config --global user.email ...

git init

master has no special meaning.It’s just a default branch.

git add

Staging area stores info about what will go into next commit.

working directory

staging area repository

commit

checkout the project

stage files

git commit

189f30b664981e4397625791c8ea3bbb5f2279a3

Commit “name” is a 40-digit SHA

commit 189f30b...

tree e8455...

parent(s) nil

author Mindaugas...

committer Mindaugas...

Initial commit

tree e8455...

blob bc52a... README.md

blob bc52a...

SVN, CVS, Perforce store differences between commits.

Git stores snapshots.

commit0 commit1 commit2

tree0 tree1 tree2

blob A

blob B

blob A blob A2

blob B2 blob B2

Basic training complete.

andpushing

pulling

git remote add origin git@git...

git push origin master

git pull origin master

and mergingbranching

git branch name

Branch is a reference to the head of a line of work.

C0 C1

master

feature

git checkout name

git merge name

C0

master

C1 C2

F1 F2

feature

C0

master

C1 C2

F1 F2

feature

C3

git rebase name

C0

master

C1 C2

F1 F2

feature

C0

master

F2 C2C1 F1

feature

merge is fine, but in a lot of cases, rebase is better.

Branching - too easy not to do

manipulating

history

git commit --amend

git rebase --interactive

Interactive rebase lets you: reword, edit, squash, fixup, exec, remove and reorder.

You can change history of remote repository with git push --force.

Be careful!

Rewriting history is funand useful!

svngit-

git svn clone http://...

git svn rebase ~ svn update

git svn dcommit ~ svn commit

GitHub

The best way to collaborate.

More than 1.6 million people, 2.8 million repositories.

Used by individuals.

And organizations.

thoughts

closing

blame bisect cherry-pick clean cvsimport describe diff fetch filter-branch grep request-pull revert svnimport stash submodule tag and more...

git-scm.comgitready.comgitimmersion.comontwik.com/category/git-github

RESOURCES

Git != Subversion + Magic

The slogan of Subversion for a while was "CVS done right". If you start with that kind of slogan, there's nowhere you can go. There is no way to do CVS right.

Linus Torvalds

codingfearlessly.com

twitter.com/mmozuras

github.com/mmozuras

thanks!

top related