SlideShare uma empresa Scribd logo
1 de 84
Baixar para ler offline
Będzie Git
mam nadzieje...
Git / Why should I care?
http://www.google.com/trends/explore#cat=0-5-32&q=git%2C%20subversion%2C%20mercurial&cmpt=q
Git / What is Git ?
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
Git / What is Git ?
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
Git / What's Linus likes ?
Git / What's Linus likes ?
Git / Open Source
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
Git / Distributed
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
Git / Central vs Distributed
Computer A
checkout
file
Computer
checkout
file
Central VCS
version database
version 1
version 2
version 3
Git / Central vs Distributed
Computer A
version
database
file
version 1
version 2
Computer A
version
database
file
version 1
version 2
Server Computer
version
database
version 1
version 2
Git / Efficiency
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
Git / Efficiency
Not a shrink wrap product, so not quite what we are doing, however facebook have 700 developers, with new code
pushed out daily
http://venturebeat.com/2012/08/03/facebook-code/
Our merging process seems to have slowed down, where merges are now held until the end of the iteration. We need to
become more rapid and have user stories accepted earlier in the iteration cycle, with more regular and smaller merges
taking place throughout the iteration.
Cheers,
XXX
Software Development Engineering Manager
Git / Efficiency
Git / Efficiency
Git /Efficiency
$
time to deliver (time to market) + additional costs (disk space,..)
=
methodologies
version control system
open-source projects
programming languages (functional/lambda = less code)
modular architecture
continuous integration
test automation
continuous deployment
monitoring driven development
Git / Delta based storage
Commit 1 Commit 2 Commit 3 Commit 4 Commit 5
index.html
style.css
main.js
Δ1
Δ2
Δ3
Δ5
Δ7
Δ8
homt.html Δ6
Git / Delta based storage
Commit 1 Commit 2 Commit 3 Commit 4 Commit 5
index.html
style.css
main.js
Δ1
Δ2
Δ3
Δ5
Δ7
Δ8
homt.html Δ6
Git / Delta based storage
Commit 1 Commit 2 Commit 3 Commit 4 Commit 5
index.html
style.css
main.js
Δ1
Δ2
Δ3
Δ5
Δ7
Δ8
homt.html Δ6
Git / Delta based storage
Commit 1 Commit 2 Commit 3 Commit 4 Commit 5
index.html
style.css
main.js
Δ1
Δ2
Δ3
Δ5
Δ7
Δ8
homt.html Δ6
Git / Delta based storage
Commit 1 Commit 2 Commit 3 Commit 4 Commit 5
index.html
style.css
main.js
Δ1
Δ2
Δ3
Δ5
Δ7
Δ8
homt.html Δ6
Git / Delta based storage
Commit 1 Commit 2 Commit 3 Commit 4 Commit 5
index.html
style.css
main.js
Δ1
Δ2
Δ3
Δ5
Δ7
Δ8
homt.html Δ6
Git / Direct Acyclic Graph Storage
Commit 1 Commit 2 Commit 3 Commit 4 Commit 5
entity 1
entity 2
entity 3
entity 4
entity 5
entity 6
entity 8
entity 9
entity 0
entity 7 entity 6
Git / Direct Acyclic Graph
Directed Graph
Arcs Connecting the nodes are directional.
Git / Direct Acyclic Graph
A->B->C->D->A
is a CYCLE
Acyclic graphs have NO CYCLES
A
C
B
D
Git / Source control taxonomy
delta
storage
local
centralized
distributed
rcs
cvs cvs perforce
darcs mercurial
dag
storage
local
centralized
distributed
cp -r
time
machine
bitkeeper
git bazaar
Git / Meat
.git
config file
hooks
index
object database
references
Git / Object database
.git
config file
hooks
index
object database
references
Git / Object database / Algorithm
new_content = type + ’ ‘ + content.size + 0
+ content
sha = Digest::SHA1.hexdigest(new_content)
“824aed035c0aa75d64c...”
compressed = zlib::deflate(new_content)
path = “.git/objects/82/4aed035c0aa75d64c...”
File.open(path, ‘w’) {|f| f.write(compressed)}
http://alblue.bandlem.com/2011/08/git-tip-of-week-objects.html
Git / Object database / GC
git gc
.git/objects/82/4aed035c0aa75d64c...
.git/objects/1d/c9cbcb76cbb80fce1...
.git/objects/63/874f37013c1740acd...
.git/objects/04/fb8aee105e6e445e8...
.git/objects/45/b983be36b73c0788d...
.git/objects/f1/032eed02413a1145c...
.git/objects/pack/pack-999727..9f600.pack
.git/objects/pack/pack-999727..9f600.idx
http://alblue.bandlem.com/2011/09/git-tip-of-week-objects-and-packfiles.html
Git / Object database
blob tree
commit tag
FILE
===============
srutu tutu majtki z drutu
Git / Object database / Blob
blob [content size]0
blob : a906cb
zlib::deflate
http://alblue.bandlem.com/2011/09/git-tip-of-week-objects-and-packfiles.html
Git / Object database / Tree
./
blob : a874b7
blob : a906cb
tree : fe8971
blob : a0a60a
tree : 1a738d
index.html
js/
main.js
README
100644 blob a874b7 README
100644 blob a906cb index.html
040000 tree fe8971 js
Git / Object database / Tree
tree [content size]0
tree : 1a738d
zlib::deflate
http://alblue.bandlem.com/2011/08/git-tip-of-week-trees.html
Git / Object database / Commit
commit
blob
blob
tree
blob
tree
tree
http://alblue.bandlem.com/2011/09/git-tip-of-week-commits.html
tree e1b3ec
parent a11bef
author Marek Prochera
<marek.prochera@gmail.com> 1205624433
committer Marek Prochera
<marek.prochera@gmail.com> 1205624433
my second commit
Git / Object database / Commit
commit [content size]0
commit : e1b3ec
zlib::deflate
Git / Object database / Tag
tag
tree
blob
commit
object 0576fa
type commit
tag v0.1
tagger Marek Prochera
<marek.prochera@gmail.com> 1205624655
this is my v0.1 tag
Git / Object database / Tag
tag [content size]0
tag : 0c819c
zlib::deflate
http://alblue.bandlem.com/2011/04/git-tip-of-week-tags.html
Git / Object database
blob tree
immutable! fuck yea!
commit tag
Git / References
.git
config file
hooks
index
object database
references
References
lightweight, movable pointers to a commit
stored in .git/refs/* as file
Git / References
HEAD
blob
commit
branch
tree
tagremote
Git / Object db + Refs / Use case
git checkout v.01
.git/refs/tags/v0.1 "0c819c"
tag: 0c819c
commit : a11bef
tree : 1a738d
README blob : a874b7
Git / References
commit history
branching and merging
remotes
...
Git / Treeish
alternate ways to refer to
objects or ranges of objects
• full sha-1
• partial sha-1
• branch or tag name
• date spec
• ordinal spec
• carrot parent
• tilde spec
• tree pointer
• blob spec
• ranges
Git / Treeish / Full sha-1
6e453f523fa1da50ecb04431101112b3611c6a4d
Git / Treeish / Partial sha-1
6e453f523fa1da50ecb04431101112b3611c6a4d
6e453f523fa1da50
6e453
Git / Treeish / Branch, remote, tag
v1.0
master
origin/kuciap
Git / Treeish / Ordinal Spec
master@{5}
5th prior value of ‘master’
Git / Treeish / Tidle Spec
master~2
2nd generation grandparent of ‘master’
Git / Treeish / Tree Pointer
master^{tree}
tree that ‘master’ points to
Git / Treeish / Blob spec
master:/path/to/file
blob of that file in ‘master’ commit
Git / Treeish / Ranges
ce0e4..e4272
everything between two commits
Git / Index
.git
config file
hooks
index
object database
references
Git / Index
working directory
repository
index
git add ...
git commit ...
http://alblue.bandlem.com/2011/10/git-tip-of-week-understanding-index.html
Git / Hooks
.git
config file
hooks
index
object database
references
hooks = automation :)
fuck yea!
Git / Hooks
Git / Config
.git
config file
hooks
index
object database
references
config = config :)
Git / Config
Over 152 commands
42 porcelain
110 plumbing
Git / Git Playground
Git / ID
git config --global user.name “Marek Prochera”
git config --global user.email “marek.prochera@gmail.com”
mpr:~ marek$ cat ~/.gitconfig
[user]
name = Marek Prochera
email = marek.prochera@gmail.com
Git / Clone
mpr:tmp marek$ git clone git@github.com:playframework/Play20.git
Cloning into 'Play20'...
remote: Counting objects: 43846, done.
remote: Compressing objects: 100% (17930/17930), done.
remote: Total 43846 (delta 22410), reused 40397 (delta 19382)
Receiving objects: 100% (43846/43846), 57.74 MiB | 3.41 MiB/s, done.
Resolving deltas: 100% (22410/22410), done.
Git / and so on...
git init
git add -A
git commit -a -m "Initial commit"
git status
git log
git log --pretty=oneline
git log --pretty=format: %h %an %ar - %s
git diff (treeish1) (treeish2)
Git / and so on...
git branch
git show-branch
git checkout -b feature
git merge fature
git rebase
Git / Merge & rebase
develop
master
C 0 C 7
C 3
C 6
C 4 C 5
develop
master
C 0 C 6'C 3 C 4 C 5
Git / and so on...
mpr:test2 marek$ git remote add krogulec git@github.com:
playframework/Play20.git
mpr:test2 marek$ git remote -v
krogulec git@github.com:playframework/Play20.git (fetch)
krogulec git@github.com:playframework/Play20.git (push)
Git / and so on...
git remote show krogulec
push / pull krogulec master
pull = fetch + merge
no more scm document!
Git / Workflows
Git / Repo model / Shared
shared repository
dev 2dev 1
Git / Workflows
shared repository
dev 2dev 1
Git / Repo ... / dictator and lieutenants
blessed repository
dev 2
dev 1
lieutenants
dictator
lieutenants
Git / Repo ... / Integration manager
blessed repository
dev 2
dev 1
dev 1 public repo
integration manager
dev 2 public repo
Git / Git-Flow
Git / Git-Flow
http://nvie.com/posts/a-successful-git-branching-model/
https://github.com/nvie/gitflow
......
git flow release
git flow release start <release> [<base>]
git flow release finish <release>
Git / Repos
Provider Git Mercurial Free Priv Rep Premium
github
bitbucket
X
X !!!
X
X X
your own EC2 !!! !!!!!! !!!
http://www.wikivs.com/wiki/Git_vs_Mercurial#Hosting_Provider_Support
Git / Git as a SVN client
git as a client:
do not mess in history !
sudo apt-get install git-svn
git svn init svn://repo.path/trunk
git svn fetch -r HEAD
pull:
git svn rebase
push:
git svn dcommit
http://trac.parrot.org/parrot/wiki/git-svn-tutorial
Git / Tools/IDE support
Git / Tools/IDE support / Git alias
#make "com" alias for "commit"
git config alias.com commit
#make "co" alias for checkout
git config alias.co checkout
#make "br" alias for branch
git config alias.br branch
# When you want to see just the differences of one function in one file in two different commits
git config alias.funcdiff '!sh -c "git show "$1:$3" | sed -n "/^[^ t].*$4(/,/^}/p" > .tmp1 &&
git show "$2:$3" | sed -n "/^[^ t].*$4(/,/^}/p" > .tmp2 &&
git diff --no-index .tmp1 .tmp2"' -
Git / Tools/IDE support / bash
https://github.com/magicmonty/bash-git-prompt
Git / Tools/IDE support
Repository management (ssh keys, privileges ): gitosis
https://wiki.archlinux.org/index.php/Gitosis
Web based browsers:
https://wiki.archlinux.org/index.php/Gitweb
Browser + code review:
https://code.google.com/p/gerrit/
http://www.codebrag.com/
Git / Tools/IDE support
IntelliJ IDEA as always the best :)
egit in eclipse sucks
most of good GUI tools for git are dedicated for Mac OSX :/
http://git-scm.com/downloads/guis
linux
gitk / gitg
(http://git.gnome.org/browse/gitg)
Git / Tools/IDE support
IntelliJ IDEA as always the best :)
egit in eclipse sucks
most of good GUI tools for git are dedicated for Mac OSX :/
http://git-scm.com/downloads/guis
linux
gitk / gitg
(http://git.gnome.org/browse/gitg)
Git / Tools/IDE support
but if you like ponies ... you're lucky!
SourceTree @ Atlassian
http://www.atlassian.com/software/sourcetree/overview
Git Bash!
Git / Git vs Hg
If you just give them a chance....
http://felipec.wordpress.com/2012/05/26/no-mercurial-branches-are-still-not-better-than-git-ones-response-to-jhws-more-on-
mercurial-vs-git-with-graphs/
Git / Resources
https://www.google.com/search?q=git
http://alblue.bandlem.com/Tag/git/
http://gitref.org/
ProGit (EN/PL)
http://git-scm.com/
Git. Rozproszony system kontroli wersji (PL)
http://helion.pl/ksiazki/git-rozproszony-system-kontroli-wersji-wlodzimierz-gajda,gitroz.htm
http://pcottle.github.io/learnGitBranching/
Git / This is the end
Thank you

Mais conteúdo relacionado

Mais procurados

Geecon11 - Git: a Gentle InTroduction
Geecon11 -  Git: a Gentle InTroductionGeecon11 -  Git: a Gentle InTroduction
Geecon11 - Git: a Gentle InTroductionBruno Bossola
 
IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...
IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...
IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...Bartosz Chrabski
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internallySeongJae Park
 
Git Memento of basic commands
Git Memento of basic commandsGit Memento of basic commands
Git Memento of basic commandsZakaria Bouazza
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot publicSeongJae Park
 
Git workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakowGit workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakowLuca Milanesio
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with EclipseChris Aniszczyk
 
GIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemGIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemTommaso Visconti
 
Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...
Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...
Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...DrupalCape
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSSeongJae Park
 
Understanding and Using Git at Eclipse
Understanding and Using Git at EclipseUnderstanding and Using Git at Eclipse
Understanding and Using Git at EclipseChris Aniszczyk
 
Ankara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara JUG
 
EclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at EclipseEclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at Eclipsemsohn
 
Dependency management in golang
Dependency management in golangDependency management in golang
Dependency management in golangRamit Surana
 
EclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenEclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenmsohn
 

Mais procurados (20)

Geecon11 - Git: a Gentle InTroduction
Geecon11 -  Git: a Gentle InTroductionGeecon11 -  Git: a Gentle InTroduction
Geecon11 - Git: a Gentle InTroduction
 
IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...
IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...
IBM Agile Engineering Summit 18: How to Integrate IBM Rational® Team Concert ...
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internally
 
Presentacion git
Presentacion gitPresentacion git
Presentacion git
 
Git Memento of basic commands
Git Memento of basic commandsGit Memento of basic commands
Git Memento of basic commands
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
 
16 Git
16 Git16 Git
16 Git
 
Git workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakowGit workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakow
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with Eclipse
 
GIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemGIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control System
 
How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
 
Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...
Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...
Bang a Gong, GIT It On, or Running Drupal With a GIT Repository (11/04/20 - B...
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCS
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Understanding and Using Git at Eclipse
Understanding and Using Git at EclipseUnderstanding and Using Git at Eclipse
Understanding and Using Git at Eclipse
 
Ankara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumu
 
Git & Github for beginners
Git & Github for beginnersGit & Github for beginners
Git & Github for beginners
 
EclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at EclipseEclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at Eclipse
 
Dependency management in golang
Dependency management in golangDependency management in golang
Dependency management in golang
 
EclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenEclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heaven
 

Destaque

Learning git
Learning gitLearning git
Learning gitSid Anand
 
Version control with GIT
Version control with GITVersion control with GIT
Version control with GITZeeshan Khan
 
JAZOON'13 - Bartosz Majsak - Git Workshop - Kung Fu
JAZOON'13 - Bartosz Majsak - Git Workshop - Kung FuJAZOON'13 - Bartosz Majsak - Git Workshop - Kung Fu
JAZOON'13 - Bartosz Majsak - Git Workshop - Kung Fujazoon13
 
Git vs Subversion: ¿Cuando elegir uno u otro?
Git vs Subversion: ¿Cuando elegir uno u otro?Git vs Subversion: ¿Cuando elegir uno u otro?
Git vs Subversion: ¿Cuando elegir uno u otro?Paradigma Digital
 
A proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversionA proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversionCollabNet
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitLukas Fittl
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners HubSpot
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to gitJoel Krebs
 

Destaque (14)

Learning git
Learning gitLearning git
Learning git
 
Version control with GIT
Version control with GITVersion control with GIT
Version control with GIT
 
JAZOON'13 - Bartosz Majsak - Git Workshop - Kung Fu
JAZOON'13 - Bartosz Majsak - Git Workshop - Kung FuJAZOON'13 - Bartosz Majsak - Git Workshop - Kung Fu
JAZOON'13 - Bartosz Majsak - Git Workshop - Kung Fu
 
Git vs Subversion: ¿Cuando elegir uno u otro?
Git vs Subversion: ¿Cuando elegir uno u otro?Git vs Subversion: ¿Cuando elegir uno u otro?
Git vs Subversion: ¿Cuando elegir uno u otro?
 
A proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversionA proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversion
 
Git
GitGit
Git
 
Git Introduction
Git IntroductionGit Introduction
Git Introduction
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Intro To Git
Intro To GitIntro To Git
Intro To Git
 
Git Presentation
Git PresentationGit Presentation
Git Presentation
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
Getting Git
Getting GitGetting Git
Getting Git
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to git
 

Semelhante a Tech thursdays / GIT

JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -EssentialsJAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentialsjazoon13
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An IntroductionBehzad Altaf
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICLa FeWeb
 
Mastering git - Workflow
Mastering git - WorkflowMastering git - Workflow
Mastering git - WorkflowTahsin Abrar
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitE Carter
 
Working in Team using Git in Unity
Working in Team using Git in UnityWorking in Team using Git in Unity
Working in Team using Git in UnityRifauddin Tsalitsy
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?9 series
 
Git 入门与实践
Git 入门与实践Git 入门与实践
Git 入门与实践Terry Wang
 
Git 入门 与 实践
Git 入门 与 实践Git 入门 与 实践
Git 入门 与 实践Terry Wang
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developersWim Godden
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github Max Claus Nunes
 
Git 101 Workshop
Git 101 WorkshopGit 101 Workshop
Git 101 WorkshopJoy Seng
 
Git/Gerrit with TeamForge
Git/Gerrit with TeamForgeGit/Gerrit with TeamForge
Git/Gerrit with TeamForgeCollabNet
 

Semelhante a Tech thursdays / GIT (20)

JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -EssentialsJAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
 
Git introduction
Git introductionGit introduction
Git introduction
 
Mastering git - Workflow
Mastering git - WorkflowMastering git - Workflow
Mastering git - Workflow
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)
 
GIT from n00b
GIT from n00bGIT from n00b
GIT from n00b
 
Working in Team using Git in Unity
Working in Team using Git in UnityWorking in Team using Git in Unity
Working in Team using Git in Unity
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?
 
Git
GitGit
Git
 
Git 入门与实践
Git 入门与实践Git 入门与实践
Git 入门与实践
 
Git 入门 与 实践
Git 入门 与 实践Git 入门 与 实践
Git 入门 与 实践
 
git presentation
git presentation git presentation
git presentation
 
Magie di git
Magie di gitMagie di git
Magie di git
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developers
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
 
Git 101 Workshop
Git 101 WorkshopGit 101 Workshop
Git 101 Workshop
 
Git/Gerrit with TeamForge
Git/Gerrit with TeamForgeGit/Gerrit with TeamForge
Git/Gerrit with TeamForge
 

Último

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 

Último (20)

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 

Tech thursdays / GIT

  • 2. Git / Why should I care? http://www.google.com/trends/explore#cat=0-5-32&q=git%2C%20subversion%2C%20mercurial&cmpt=q
  • 3. Git / What is Git ? Git is an open source distributed version control system designed for speed and efficiency. Initially designed and developed by Linus Torvalds for Linux kernel development.
  • 4. Git / What is Git ? Git is an open source distributed version control system designed for speed and efficiency. Initially designed and developed by Linus Torvalds for Linux kernel development.
  • 5. Git / What's Linus likes ?
  • 6. Git / What's Linus likes ?
  • 7. Git / Open Source Git is an open source distributed version control system designed for speed and efficiency. Initially designed and developed by Linus Torvalds for Linux kernel development.
  • 8. Git / Distributed Git is an open source distributed version control system designed for speed and efficiency. Initially designed and developed by Linus Torvalds for Linux kernel development.
  • 9. Git / Central vs Distributed Computer A checkout file Computer checkout file Central VCS version database version 1 version 2 version 3
  • 10. Git / Central vs Distributed Computer A version database file version 1 version 2 Computer A version database file version 1 version 2 Server Computer version database version 1 version 2
  • 11. Git / Efficiency Git is an open source distributed version control system designed for speed and efficiency. Initially designed and developed by Linus Torvalds for Linux kernel development.
  • 12. Git / Efficiency Not a shrink wrap product, so not quite what we are doing, however facebook have 700 developers, with new code pushed out daily http://venturebeat.com/2012/08/03/facebook-code/ Our merging process seems to have slowed down, where merges are now held until the end of the iteration. We need to become more rapid and have user stories accepted earlier in the iteration cycle, with more regular and smaller merges taking place throughout the iteration. Cheers, XXX Software Development Engineering Manager
  • 15. Git /Efficiency $ time to deliver (time to market) + additional costs (disk space,..) = methodologies version control system open-source projects programming languages (functional/lambda = less code) modular architecture continuous integration test automation continuous deployment monitoring driven development
  • 16. Git / Delta based storage Commit 1 Commit 2 Commit 3 Commit 4 Commit 5 index.html style.css main.js Δ1 Δ2 Δ3 Δ5 Δ7 Δ8 homt.html Δ6
  • 17. Git / Delta based storage Commit 1 Commit 2 Commit 3 Commit 4 Commit 5 index.html style.css main.js Δ1 Δ2 Δ3 Δ5 Δ7 Δ8 homt.html Δ6
  • 18. Git / Delta based storage Commit 1 Commit 2 Commit 3 Commit 4 Commit 5 index.html style.css main.js Δ1 Δ2 Δ3 Δ5 Δ7 Δ8 homt.html Δ6
  • 19. Git / Delta based storage Commit 1 Commit 2 Commit 3 Commit 4 Commit 5 index.html style.css main.js Δ1 Δ2 Δ3 Δ5 Δ7 Δ8 homt.html Δ6
  • 20. Git / Delta based storage Commit 1 Commit 2 Commit 3 Commit 4 Commit 5 index.html style.css main.js Δ1 Δ2 Δ3 Δ5 Δ7 Δ8 homt.html Δ6
  • 21. Git / Delta based storage Commit 1 Commit 2 Commit 3 Commit 4 Commit 5 index.html style.css main.js Δ1 Δ2 Δ3 Δ5 Δ7 Δ8 homt.html Δ6
  • 22. Git / Direct Acyclic Graph Storage Commit 1 Commit 2 Commit 3 Commit 4 Commit 5 entity 1 entity 2 entity 3 entity 4 entity 5 entity 6 entity 8 entity 9 entity 0 entity 7 entity 6
  • 23. Git / Direct Acyclic Graph Directed Graph Arcs Connecting the nodes are directional.
  • 24. Git / Direct Acyclic Graph A->B->C->D->A is a CYCLE Acyclic graphs have NO CYCLES A C B D
  • 25. Git / Source control taxonomy delta storage local centralized distributed rcs cvs cvs perforce darcs mercurial dag storage local centralized distributed cp -r time machine bitkeeper git bazaar
  • 26. Git / Meat .git config file hooks index object database references
  • 27. Git / Object database .git config file hooks index object database references
  • 28. Git / Object database / Algorithm new_content = type + ’ ‘ + content.size + 0 + content sha = Digest::SHA1.hexdigest(new_content) “824aed035c0aa75d64c...” compressed = zlib::deflate(new_content) path = “.git/objects/82/4aed035c0aa75d64c...” File.open(path, ‘w’) {|f| f.write(compressed)} http://alblue.bandlem.com/2011/08/git-tip-of-week-objects.html
  • 29. Git / Object database / GC git gc .git/objects/82/4aed035c0aa75d64c... .git/objects/1d/c9cbcb76cbb80fce1... .git/objects/63/874f37013c1740acd... .git/objects/04/fb8aee105e6e445e8... .git/objects/45/b983be36b73c0788d... .git/objects/f1/032eed02413a1145c... .git/objects/pack/pack-999727..9f600.pack .git/objects/pack/pack-999727..9f600.idx http://alblue.bandlem.com/2011/09/git-tip-of-week-objects-and-packfiles.html
  • 30. Git / Object database blob tree commit tag
  • 31. FILE =============== srutu tutu majtki z drutu Git / Object database / Blob blob [content size]0 blob : a906cb zlib::deflate http://alblue.bandlem.com/2011/09/git-tip-of-week-objects-and-packfiles.html
  • 32. Git / Object database / Tree ./ blob : a874b7 blob : a906cb tree : fe8971 blob : a0a60a tree : 1a738d index.html js/ main.js README
  • 33. 100644 blob a874b7 README 100644 blob a906cb index.html 040000 tree fe8971 js Git / Object database / Tree tree [content size]0 tree : 1a738d zlib::deflate http://alblue.bandlem.com/2011/08/git-tip-of-week-trees.html
  • 34. Git / Object database / Commit commit blob blob tree blob tree tree
  • 35. http://alblue.bandlem.com/2011/09/git-tip-of-week-commits.html tree e1b3ec parent a11bef author Marek Prochera <marek.prochera@gmail.com> 1205624433 committer Marek Prochera <marek.prochera@gmail.com> 1205624433 my second commit Git / Object database / Commit commit [content size]0 commit : e1b3ec zlib::deflate
  • 36. Git / Object database / Tag tag tree blob commit
  • 37. object 0576fa type commit tag v0.1 tagger Marek Prochera <marek.prochera@gmail.com> 1205624655 this is my v0.1 tag Git / Object database / Tag tag [content size]0 tag : 0c819c zlib::deflate http://alblue.bandlem.com/2011/04/git-tip-of-week-tags.html
  • 38. Git / Object database blob tree immutable! fuck yea! commit tag
  • 39. Git / References .git config file hooks index object database references
  • 40. References lightweight, movable pointers to a commit stored in .git/refs/* as file Git / References HEAD blob commit branch tree tagremote
  • 41. Git / Object db + Refs / Use case git checkout v.01 .git/refs/tags/v0.1 "0c819c" tag: 0c819c commit : a11bef tree : 1a738d README blob : a874b7
  • 42. Git / References commit history branching and merging remotes ...
  • 43. Git / Treeish alternate ways to refer to objects or ranges of objects • full sha-1 • partial sha-1 • branch or tag name • date spec • ordinal spec • carrot parent • tilde spec • tree pointer • blob spec • ranges
  • 44. Git / Treeish / Full sha-1 6e453f523fa1da50ecb04431101112b3611c6a4d
  • 45. Git / Treeish / Partial sha-1 6e453f523fa1da50ecb04431101112b3611c6a4d 6e453f523fa1da50 6e453
  • 46. Git / Treeish / Branch, remote, tag v1.0 master origin/kuciap
  • 47. Git / Treeish / Ordinal Spec master@{5} 5th prior value of ‘master’
  • 48. Git / Treeish / Tidle Spec master~2 2nd generation grandparent of ‘master’
  • 49. Git / Treeish / Tree Pointer master^{tree} tree that ‘master’ points to
  • 50. Git / Treeish / Blob spec master:/path/to/file blob of that file in ‘master’ commit
  • 51. Git / Treeish / Ranges ce0e4..e4272 everything between two commits
  • 52. Git / Index .git config file hooks index object database references
  • 53. Git / Index working directory repository index git add ... git commit ... http://alblue.bandlem.com/2011/10/git-tip-of-week-understanding-index.html
  • 54. Git / Hooks .git config file hooks index object database references
  • 55. hooks = automation :) fuck yea! Git / Hooks
  • 56. Git / Config .git config file hooks index object database references
  • 57. config = config :) Git / Config
  • 58. Over 152 commands 42 porcelain 110 plumbing Git / Git Playground
  • 59. Git / ID git config --global user.name “Marek Prochera” git config --global user.email “marek.prochera@gmail.com” mpr:~ marek$ cat ~/.gitconfig [user] name = Marek Prochera email = marek.prochera@gmail.com
  • 60. Git / Clone mpr:tmp marek$ git clone git@github.com:playframework/Play20.git Cloning into 'Play20'... remote: Counting objects: 43846, done. remote: Compressing objects: 100% (17930/17930), done. remote: Total 43846 (delta 22410), reused 40397 (delta 19382) Receiving objects: 100% (43846/43846), 57.74 MiB | 3.41 MiB/s, done. Resolving deltas: 100% (22410/22410), done.
  • 61. Git / and so on... git init git add -A git commit -a -m "Initial commit" git status git log git log --pretty=oneline git log --pretty=format: %h %an %ar - %s git diff (treeish1) (treeish2)
  • 62. Git / and so on... git branch git show-branch git checkout -b feature git merge fature git rebase
  • 63. Git / Merge & rebase develop master C 0 C 7 C 3 C 6 C 4 C 5 develop master C 0 C 6'C 3 C 4 C 5
  • 64. Git / and so on... mpr:test2 marek$ git remote add krogulec git@github.com: playframework/Play20.git mpr:test2 marek$ git remote -v krogulec git@github.com:playframework/Play20.git (fetch) krogulec git@github.com:playframework/Play20.git (push)
  • 65. Git / and so on... git remote show krogulec push / pull krogulec master pull = fetch + merge
  • 66. no more scm document! Git / Workflows
  • 67. Git / Repo model / Shared shared repository dev 2dev 1
  • 68. Git / Workflows shared repository dev 2dev 1
  • 69. Git / Repo ... / dictator and lieutenants blessed repository dev 2 dev 1 lieutenants dictator lieutenants
  • 70. Git / Repo ... / Integration manager blessed repository dev 2 dev 1 dev 1 public repo integration manager dev 2 public repo
  • 72. Git / Git-Flow http://nvie.com/posts/a-successful-git-branching-model/ https://github.com/nvie/gitflow ...... git flow release git flow release start <release> [<base>] git flow release finish <release>
  • 73. Git / Repos Provider Git Mercurial Free Priv Rep Premium github bitbucket X X !!! X X X your own EC2 !!! !!!!!! !!! http://www.wikivs.com/wiki/Git_vs_Mercurial#Hosting_Provider_Support
  • 74. Git / Git as a SVN client git as a client: do not mess in history ! sudo apt-get install git-svn git svn init svn://repo.path/trunk git svn fetch -r HEAD pull: git svn rebase push: git svn dcommit http://trac.parrot.org/parrot/wiki/git-svn-tutorial
  • 75. Git / Tools/IDE support
  • 76. Git / Tools/IDE support / Git alias #make "com" alias for "commit" git config alias.com commit #make "co" alias for checkout git config alias.co checkout #make "br" alias for branch git config alias.br branch # When you want to see just the differences of one function in one file in two different commits git config alias.funcdiff '!sh -c "git show "$1:$3" | sed -n "/^[^ t].*$4(/,/^}/p" > .tmp1 && git show "$2:$3" | sed -n "/^[^ t].*$4(/,/^}/p" > .tmp2 && git diff --no-index .tmp1 .tmp2"' -
  • 77. Git / Tools/IDE support / bash https://github.com/magicmonty/bash-git-prompt
  • 78. Git / Tools/IDE support Repository management (ssh keys, privileges ): gitosis https://wiki.archlinux.org/index.php/Gitosis Web based browsers: https://wiki.archlinux.org/index.php/Gitweb Browser + code review: https://code.google.com/p/gerrit/ http://www.codebrag.com/
  • 79. Git / Tools/IDE support IntelliJ IDEA as always the best :) egit in eclipse sucks most of good GUI tools for git are dedicated for Mac OSX :/ http://git-scm.com/downloads/guis linux gitk / gitg (http://git.gnome.org/browse/gitg)
  • 80. Git / Tools/IDE support IntelliJ IDEA as always the best :) egit in eclipse sucks most of good GUI tools for git are dedicated for Mac OSX :/ http://git-scm.com/downloads/guis linux gitk / gitg (http://git.gnome.org/browse/gitg)
  • 81. Git / Tools/IDE support but if you like ponies ... you're lucky! SourceTree @ Atlassian http://www.atlassian.com/software/sourcetree/overview Git Bash!
  • 82. Git / Git vs Hg If you just give them a chance.... http://felipec.wordpress.com/2012/05/26/no-mercurial-branches-are-still-not-better-than-git-ones-response-to-jhws-more-on- mercurial-vs-git-with-graphs/
  • 83. Git / Resources https://www.google.com/search?q=git http://alblue.bandlem.com/Tag/git/ http://gitref.org/ ProGit (EN/PL) http://git-scm.com/ Git. Rozproszony system kontroli wersji (PL) http://helion.pl/ksiazki/git-rozproszony-system-kontroli-wersji-wlodzimierz-gajda,gitroz.htm http://pcottle.github.io/learnGitBranching/
  • 84. Git / This is the end Thank you