The document discusses various topics related to using git for collaboration including:
- Git was created by Linus Torvalds as a replacement for BitKeeper for Linux kernel development.
- Git is a distributed version control system that allows developers to work locally and share code through remote repositories.
- Best practices for git include writing clear commit messages, using rebasing to clean up history, and squashing multiple commits together.
1. Coworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with gitCoworking with git
Collaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for gitCollaborating tips for git
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
LOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, AntwerpLOADays, Antwerp
April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015April 11th, 2015
2. whoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoami
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
• System administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.euSystem administrator at inuits.eu
• Git user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ yearsGit user for 5+ years
• DevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believer
• Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004Open-source defender since 2004
• @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie on irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/github
4. Ops <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 DevOps <3 Dev
• Infrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as CodeInfrastructure as Code
▶ SSSSSSSSSSSSSSSSSCM all the things
▶ MMMMMMMMMMMMMMMMMonitoring
▶ CCCCCCCCCCCCCCCCConfiguration
▶ AAAAAAAAAAAAAAAAApplication deployment
• Taking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software developmentTaking part of software development
▶ UUUUUUUUUUUUUUUUUnderstanding
▶ MMMMMMMMMMMMMMMMMonitoring
▶ HHHHHHHHHHHHHHHHHigh Availability
▶ ……………………………………………
5. Me and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and gitMe and git
• I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)I first used subversion (10 years ago)
• Private forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforgePrivate forges and sourceforge
• 5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git5 years later a lot of projects moved to git
• The Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot gitThe Puppet community also uses a lot git
• GGGGGGGGGGGGGGGGGit/Hg are the de-facto standards in OS
projects
6. Git is a free and open source distributed version control system
designed to handle everything from small to very large projects
with speed and efficiency.
Source: http://git-scm.com/
7. git loggit loggit loggit loggit loggit loggit loggit loggit loggit loggit loggit loggit loggit loggit loggit loggit log
• Initiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus TorvaldsInitiated in 2005 by Linus Torvalds
• Replacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeperReplacement of closed-source BitKeeper
• Created for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel developmentCreated for the Linux Kernel development
• Now used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projectsNow used by thousands of projects
8. git is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributedgit is distributed
• EEEEEEEEEEEEEEEEEverything can be done in local (except
pull&push)
• WWWWWWWWWWWWWWWWWork with several remotes
• SSSSSSSSSSSSSSSSShare code with anyone
• NNNNNNNNNNNNNNNNNo unique central repository
• AAAAAAAAAAAAAAAAA lot of workflows possible
9. A teamA teamA teamA teamA teamA teamA teamA teamA teamA teamA teamA teamA teamA teamA teamA teamA team
• OOOOOOOOOOOOOOOOOne person
• 1111111111111111100 people
• CCCCCCCCCCCCCCCCCoders, testers, readers?
10. A repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than codeA repo is more than code
• CCCCCCCCCCCCCCCCCode changes
• CCCCCCCCCCCCCCCCCommit messages
• DDDDDDDDDDDDDDDDDates
• BBBBBBBBBBBBBBBBBranches
• TTTTTTTTTTTTTTTTTags
28. What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?What do we have?
A nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changesA nice step-by-step list of changes
A big mess
No one would merge that
38. git rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -igit rebase -i
• CCCCCCCCCCCCCCCCChanges the git history
• sssssssssssssssssquash, delete, change, reorder commits
• gggggggggggggggggit hashes are unique, any change change
them
51. Find the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commitFind the tag of a commit
$ git name-rev --name-only 106cb38dd0bc5ea2d2d0adef0b40
06bd61884e42
remotes/origin/8.5.2~1
52. git autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrectgit autocorrect
$ git config help.autocorrect 10
$ git pusk
WARNING: You called a Git command named 'pusk', which does not
Continuing under the assumption that you meant 'push'
in 1.0 seconds automatically...
53. GPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commitsGPG-Sign your commits
• gggggggggggggggggit commit -S
• SSSSSSSSSSSSSSSSSign PR, merge commits
• DDDDDDDDDDDDDDDDDo not sign every commit (then it becomes
useless)
57. Thank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank you
Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?
Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2Git workshop by @teranex 2.30pm in room2