SlideShare una empresa de Scribd logo
1 de 112
Descargar para leer sin conexión
#atlassian
Becoming a Git Master: 
Concepts and Techniques to convert you 
into a master of the DVCS craft 
NICOLA PAOLUCCI • DEVELOPER ADVOCATE • ATLASSIAN • @DURDN
Becoming a Git Master: 
Concepts and Techniques to convert you 
into a master of the DVCS craft 
NICOLA PAOLUCCI • DEVELOPER ADVOCATE • ATLASSIAN • @DURDN
Marcus Bertrand 
Tim Pettersen 
I'm George. George McFly. 
I'm your density… I mean, 
your destiny 
Stefan Saasen 
Sarah Goff Dupont
Let’s Become Git Pros!
Here you’ll learn: 
PRO ALIASES & PROMPT 
HIDING STUFF 
CONFLICT RESOLUTION TIPS 
POLISH YOUR CODE 
PREVENT TAMPERING 
PROJECT DEPENDENCIES
A pro command prompt
PRO ALIASES & PROMPT 
Everyone has their favorite, but! 
Liquid prompt is awesome 
http://bit.do/liquid-prompt
PRO ALIASES & PROMPT 
Everyone has their favorite, but! 
Liquid prompt is awesome 
http://bit.do/liquid-prompt
Crafting Awesome Aliases
Aliases are stored in 
.gitconfig
In a section prefixed: 
[alias]
PRO ALIASES & PROMPT 
Basic Alias Form 
Very simple: 
ls = log --oneline 
[vagrant@vagrant-ubuntu-trusty-64:/home/vagrant/buildstep] master ± git ls 
90aa814 Merge pull request #85 from marqu3z/master 
f1eb16b overwrite source.list 
e6b9d16 change repo before prepare task 
8bc10c0 Fix for deprecated repository 
e34d861 Link to buildpacks.txt instead 
4502635 Merge pull request #76 from elia/fix-72-no-buildpack-bundle-install 
38be796 Bundle install ain't needed against the buildpack
PRO ALIASES & PROMPT 
You can do great things with just this 
For example: amend the last commit with 
everything I have here uncommitted and new 
caa = commit -a --amend -C HEAD
You can’t pass parameters 
to simple aliases :(
Or can you?!
muahahhahahhaha 
hahahahahahahha 
hahahhahahahah!
PRO ALIASES & PROMPT 
For multiple commands or complex 
parameters use a bash function! 
You can escape to a shell with ! like this: 
my_alias = "!f() { <command> }; f”
PRO ALIASES & PROMPT 
Some useful shortcuts and variables 
More in any bash manual 
$1 - first command line parameter 
$2 - second command line parameter 
$@ - all command line parameters passed
Ma, it’s the mini-DSL 
I always wanted!
PRO ALIASES & PROMPT 
What can you do with this? 
Cool cool things, for example add a Bitbucket remote: 
git remote add $1 https://bitbucket.org/$2.git;
PRO ALIASES & PROMPT 
ra = "!f() {  
 
}; f" 
What can you do with this? 
Cool cool things, for example add a Bitbucket remote: 
git remote add $1 https://bitbucket.org/$2.git;
PRO ALIASES & PROMPT 
ra = "!f() {  
 
}; f" 
What can you do with this? 
Cool cool things, for example add a Bitbucket remote: 
git remote add $1 https://bitbucket.org/$2.git; 
git ra jsmith jsmith/prj
PRO ALIASES & PROMPT 
ra = "!f() {  
 
}; f" 
What can you do with this? 
Cool cool things, for example add a Bitbucket remote: 
git remote add $1 https://bitbucket.org/$2.git; 
git ra jsmith jsmith/prj
PRO ALIASES & PROMPT 
Get all the alias goodness on Bitbucket 
http://bit.do/git-aliases
Powers of invisibility 
© http://www.amigosdosbichos.org/
Powers of invisibility 
© http://www.amigosdosbichos.org/
Tell git which files 
or folders to ignore 
in .gitignore
What if the file is 
already committed?!
muahahhahahhaha 
hahahahahahahha 
hahahhahahahah!
POWERS OF INVISIBILITY 
Hide files from 
Different from .gitignore, it hides committed files 
git update-index --assume-unchanged <file> 
very useful with git-svn
POWERS OF INVISIBILITY 
Hide files from 
Revert it with: 
git update-index --no-assume-unchanged <file> 
remember to add --no
POWERS OF INVISIBILITY 
List assumed unchanged files 
git ls-files -v | grep ^h 
Useful as alias (see alias list from before)
Conflict Resolution Tips
Conflict Resolution Tips
What is a conflict?
PRO ALIASES & PROMPT 
A word on terminology 
What do ours and theirs mean when solving conflicts? 
Current checked 
out branch 
!!! 
--ours
PRO ALIASES & PROMPT 
A word on terminology 
What do ours and theirs mean when solving conflicts? 
Current checked 
out branch 
!!! 
--ours 
Commit coming in 
(i.e. via merge) 
!!! 
--theirs
PRO ALIASES & PROMPT 
A word on terminology 
What do ours and theirs mean when solving conflicts? 
Current checked 
out branch 
!!! 
--ours 
Commit coming in 
(i.e. via merge) 
!!! 
--theirs
PRO ALIASES & PROMPT 
Basics for easy conflict resolution 
The common commands are: 
$ git checkout --ours/--theirs <file> 
Check back out our own/their own version of the file
PRO ALIASES & PROMPT 
Basics for easy conflict resolution 
The common commands are: 
$ git checkout --ours/--theirs <file> 
Check back out our own/their own version of the file 
$ git add <file> 
Add the change to the index will resolve the conflict
PRO ALIASES & PROMPT 
Aliases for easy conflict resolution 
Add these to [alias] in .gitconfig: 
git checkout --ours $@ && git add $@;
PRO ALIASES & PROMPT 
Aliases for easy conflict resolution 
Add these to [alias] in .gitconfig: 
ours = "!f() {  
git checkout --ours $@ && git add $@; 
 
}; f"
PRO ALIASES & PROMPT 
rerere resolve! 
Reuse Recorded Resolution will help you when 
dealing with repetitive and similar merge conflicts. 
$ git config --global rerere.enabled true 
Turns it on and forget about it
PRO ALIASES & PROMPT 
Sample output rerere 
$ git add hello.rb 
$ git commit 
Recorded resolution for 'hello.rb'. 
[master 68e16e5] Merge branch 'i18n'
PRO ALIASES & PROMPT 
Sample output rerere 
$ git add hello.rb 
$ git commit 
Recorded resolution for 'hello.rb'. 
[master 68e16e5] Merge branch 'i18n' 
Auto-merging hello.rb 
CONFLICT (content): Merge conflict in hello.rb 
Resolved 'hello.rb' using previous resolution.
Cover your tracks (aka polish your code)
Cover your tracks (aka polish your code)
POLISH YOUR CODE 
What is a rebase? 
It’s a way to replay commits, one by one, 
on top of a branch 
MASTER 
FEATURE
POLISH YOUR CODE 
What is a rebase? 
It’s a way to replay commits, one by one, 
on top of a branch 
MASTER 
FEATURE
POLISH YOUR CODE 
What is a rebase? 
It’s a way to replay commits, one by one, 
on top of a branch 
MASTER 
FEATURE
POLISH YOUR CODE 
What is a rebase? 
It’s a way to replay commits, one by one, 
on top of a branch 
MASTER 
FEATURE
POLISH YOUR CODE 
What is a rebase? 
It’s a way to replay commits, one by one, 
on top of a branch 
MASTER 
FEATURE 
Don’t use!
POLISH YOUR CODE 
What is a rebase? 
Correct way to use rebase to update a 
feature branch 
MASTER 
FEATURE
POLISH YOUR CODE 
What is a rebase? 
Correct way to use rebase to update a 
feature branch 
MASTER 
FEATURE
POLISH YOUR CODE 
What is an --interactive rebase? 
It’s a way to replay commits, one by one, 
deciding interactively what to do with each 
PICK! 
SQUASH 
REWORD! 
FIXUP 
EDIT ! 
EXEC
POLISH YOUR CODE 
--autosquash 
Automatically modify the todo list of 
rebase --interactive by annotating commits 
$ git config --global rebase.autosquash true 
Turns on the feature
POLISH YOUR CODE 
--autosquash 
You can prepend commit messages with: 
git commit -m “squash! …" 
git commit -m “fixup! …" 
git commit -m “reword! …" 
etc… 
Rebase task list will be then prepopulated
CUSTOMARY 
WARNING! 
rebase rewrites history! 
Treat this power with great care. 
Only rewrite history of local branches or…
Prevent tampering
Always a balancing act 
Security DevSpeed
PREVENT TAMPERING 
Lock down your repo 
Edit .git/config in the [receive] section: 
# no rewriting history 
denyNonFastForwards = true 
! 
# no deleting history 
denyDeletes = true 
! 
# check object consistency 
fsckObjects = true
Reject force push, 
Luke 
Git project has already an update hook 
‘update-paranoid’ that is designed to 
reject history rewriting updates 
http://bit.do/update-paranoid
Reject force push,Luke
Reject force push,Luke
PREVENT TAMPERING 
Impersonating Authors is easy 
with 
$ git commit -m "I'm Luke" 
$ git commit --author "Elvis <elvis@graceland.net>" -m "I'm elvis" 
commit a9f0967cba236465d6cb68247.. 
Author: Elvis <elvis@graceland.net> 
Date: Mon Apr 22 18:06:35 2013 -0500 
! 
I'm Elvis 
! 
commit d6eb7572cbb4bdd8e2aaa5c90.. 
Author: Luke <luke@tatooine.com> 
Date: Mon Apr 22 18:04:54 2013 -0500 
! 
I'm Luke
PREVENT TAMPERING 
Finally you can sign/verify tags 
git tag -s <tag_name> -m “message” 
Sign a tag with your GPG key 
git tag -v <tag_name> 
Verifies that the signature is valid
Signing release tags is often 
all you need
PREVENT TAMPERING 
Aside on GPG 
The GNU Privacy Guard 
GnuPG allows to encrypt and sign your data and 
communication, features a versatile key management system.
PREVENT TAMPERING 
Harden up by signing things 
Sample gpg commands to get you started:
PREVENT TAMPERING 
Harden up by signing things 
Sample gpg commands to get you started: 
gpg --gen-key 
Generate your GPG keys
PREVENT TAMPERING 
Harden up by signing things 
Sample gpg commands to get you started: 
gpg --gen-key 
Generate your GPG keys 
gpg -k 
List your keys
PREVENT TAMPERING 
Harden up by signing things 
Sample gpg commands to get you started: 
gpg --gen-key 
Generate your GPG keys 
gpg -k 
List your keys 
gpg -a --export <keyid> 
Export your key
PREVENT TAMPERING 
Hide files in raw objects 
The way the Linux kernel hackers do it 
git hash-object -w <file>
PREVENT TAMPERING 
Hide files in raw objects 
The way the Linux kernel hackers do it 
actually writes into the object db 
git hash-object -w <file>
PREVENT TAMPERING 
Hide files in raw objects 
The way the Linux kernel hackers do it 
actually writes into the object db 
git hash-object -w <file> 
Remember to associate a tag to 
it or it will be garbage collected
PREVENT TAMPERING 
Store your signature in 
Simple! Add a tag referencing your public key 
gpg -a --export <keyid> |  
git hash-object -w --stdin 
Store your public key in a raw object
PREVENT TAMPERING 
Store your signature in 
Simple! Add a tag referencing your public key 
gpg -a --export <keyid> |  
git hash-object -w --stdin 
Store your public key in a raw object 
git tag nicks-key 65704f3… 
Tag the raw object with a label
PREVENT TAMPERING 
Store your signature in 
Simple! Add a tag referencing your public key 
gpg -a --export <keyid> |  
git hash-object -w --stdin 
Store your public key in a raw object 
git tag nicks-key 65704f3… 
Tag the raw object with a label 
raw object id
PREVENT TAMPERING 
Import other public keys 
git cat-file -p tims-key | gpg --import 
Import a GPG key from a tag
PREVENT TAMPERING 
Finally you can sign/verify tags 
git tag -s <tag_name> -m “message” 
Sign a tag with your GPG key 
git tag -v <tag_name> 
Verifies that the signature is valid
and Project Dependencies
How do you handle 
project dependencies 
with ?
Splitting up a project 
is painful, for so many 
reasons
Use a build/dependency 
tool instead of
GIT AND PROJECT DEPENDENCIES 
I’ll give you an incomplete list of examples! 
Java 
Nodejs 
Javascript 
Python Pip easy-install 
Ruby
GIT AND PROJECT DEPENDENCIES 
I’ll give you an incomplete list of examples! (2) 
C# 
C++ c-make 
Objective C 
PHP 
Go godep
Another possibility: 
use git submodule
Another possibility: 
use git subtree
Use other build 
and cross-stack 
dependency tools
GIT AND PROJECT DEPENDENCIES 
For example you can check out: 
•Android Repo (http://bit.do/android-repo) 
•Repobuild (chrisvana / repobuild) 
•Chromium depot_tools (http://bit.do/depot-tools) 
•Facebook Buck (http://facebook.github.io/buck/) 
•Twitter Pants (http://bit.do/twitter-pants)
PRO ALIASES & PROMPT 
Review these ideas online 
http://bit.do/git-deps
Thank you! 
NICOLA PAOLUCCI • DEVELOPER ADVOCATE • ATLASSIAN • @DURDN
POWERS OF INVISIBILITY 
Hide files from 
• Level One 
• Level Two 
• Level Two 
• Level Two 
• Level One 
CODE FONT: 
<html xmlns="http://www.w3.org/1999/xhtml">
POWERS OF INVISIBILITY 
Page title here 
• Level One 
• Level Two 
• Level Two 
• Level Two 
• Level One
Page title here 
• Level One 
• Level Two 
• Level Two 
• Level Two 
• Level One
Page title here 
Page Title Here 
• Level One 
• Level Two 
• Level Two 
• Level Two 
• Level One
Page title here 
• Level One 
• Level Two 
• Level Two 
• Level Two 
• Level One
Caption goes here
Just text by itself, 
for impact.
Just text by itself, 
for impact.
Just text by itself, 
for impact.
Just text by itself, 
for impact.
Just text by itself, 
for impact.
Type Quote Here And Move Both Quotation 
Marks To The Beginning And End Of The 
Quote. Lorem Ipsum Dolor Sit Amet, Conse 
Cetur Ading Elit. 
DAVID HANDLY, GLOBOCHEM 
” 
“
Big cool statistic 2,569 Add-Ons in Marketplace
60 
45 
30 
15 
0 
2007 2008 2009 2010 
Region 1 Region 2 Region 3 
Page title here
40% 
30% 
20% 
10% 
2007 2008 2009 2010 
Page title here
Page title here 
COLUMN TITLE COLUMN TITLE COLUMN TITLE 
Content Content 
Content Content 
Content Content 
Content Content 
Content Content
Becoming a Git Master - Nicola Paolucci

Más contenido relacionado

La actualidad más candente

Managing releases effectively through git
Managing releases effectively through gitManaging releases effectively through git
Managing releases effectively through gitMohd Farid
 
Git Branching for Agile Teams
Git Branching for Agile TeamsGit Branching for Agile Teams
Git Branching for Agile TeamsSven Peters
 
Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CIAtlassian
 
Continuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyreContinuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyreSpark Summit
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull requestBryan Liu
 
Configuration as Code in Bamboo
Configuration as Code in BambooConfiguration as Code in Bamboo
Configuration as Code in BambooAtlassian
 
Git workflow in agile development
Git workflow in agile developmentGit workflow in agile development
Git workflow in agile developmentZack Siri
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingKatie Chin
 
Git Ready! Workflows
Git Ready! WorkflowsGit Ready! Workflows
Git Ready! WorkflowsAtlassian
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialHeather McNamee
 
Crossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul ReedCrossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul ReedAtlassian
 
Atlassian User Group - September 2013
Atlassian User Group - September 2013Atlassian User Group - September 2013
Atlassian User Group - September 2013Sven Peters
 
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesSalesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesAbhinav Gupta
 
Distributed Release Management
Distributed Release ManagementDistributed Release Management
Distributed Release ManagementMike Brittain
 
Git and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software DevelopmentGit and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software DevelopmentLemi Orhan Ergin
 
Philly CocoaHeads 20160414 - Building Your App SDK With Swift
Philly CocoaHeads 20160414 - Building Your App SDK With SwiftPhilly CocoaHeads 20160414 - Building Your App SDK With Swift
Philly CocoaHeads 20160414 - Building Your App SDK With SwiftJordan Yaker
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點William Yeh
 
Pipeline your pipelines!
Pipeline your pipelines!Pipeline your pipelines!
Pipeline your pipelines!Giulio Vian
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by stepBinh Quan Duc
 

La actualidad más candente (20)

Managing releases effectively through git
Managing releases effectively through gitManaging releases effectively through git
Managing releases effectively through git
 
Git Branching for Agile Teams
Git Branching for Agile TeamsGit Branching for Agile Teams
Git Branching for Agile Teams
 
Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CI
 
Continuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyreContinuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyre
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull request
 
Configuration as Code in Bamboo
Configuration as Code in BambooConfiguration as Code in Bamboo
Configuration as Code in Bamboo
 
Git workflow in agile development
Git workflow in agile developmentGit workflow in agile development
Git workflow in agile development
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End Testing
 
Git Ready! Workflows
Git Ready! WorkflowsGit Ready! Workflows
Git Ready! Workflows
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorial
 
Crossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul ReedCrossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul Reed
 
Atlassian User Group - September 2013
Atlassian User Group - September 2013Atlassian User Group - September 2013
Atlassian User Group - September 2013
 
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesSalesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
 
Distributed Release Management
Distributed Release ManagementDistributed Release Management
Distributed Release Management
 
Git and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software DevelopmentGit and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software Development
 
Philly CocoaHeads 20160414 - Building Your App SDK With Swift
Philly CocoaHeads 20160414 - Building Your App SDK With SwiftPhilly CocoaHeads 20160414 - Building Your App SDK With Swift
Philly CocoaHeads 20160414 - Building Your App SDK With Swift
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
Pipeline your pipelines!
Pipeline your pipelines!Pipeline your pipelines!
Pipeline your pipelines!
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
 
Ultimate Git Workflow - Seoul 2015
Ultimate Git Workflow - Seoul 2015Ultimate Git Workflow - Seoul 2015
Ultimate Git Workflow - Seoul 2015
 

Destacado

Spiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli KazatchkovSpiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli KazatchkovAtlassian
 
Quality at Speed - Penny Wyatt
Quality at Speed - Penny WyattQuality at Speed - Penny Wyatt
Quality at Speed - Penny WyattAtlassian
 
Advanced Git: Functionality and Features
Advanced Git: Functionality and FeaturesAdvanced Git: Functionality and Features
Advanced Git: Functionality and FeaturesBrent Laster
 
Governing JIRA at Scale - Jordan Dea-Mattson
Governing JIRA at Scale - Jordan Dea-MattsonGoverning JIRA at Scale - Jordan Dea-Mattson
Governing JIRA at Scale - Jordan Dea-MattsonAtlassian
 
The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...dmgerman
 
Code Management Workshop
Code Management WorkshopCode Management Workshop
Code Management WorkshopSameh El-Ashry
 
Git case of the week4212.
Git case of the week4212.Git case of the week4212.
Git case of the week4212.Shaikhani.
 
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
 
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchJIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchAtlassian
 
How to Use HipChat to Collaborate and Build Culture - Matthew Weinberg
How to Use HipChat to Collaborate and Build Culture - Matthew WeinbergHow to Use HipChat to Collaborate and Build Culture - Matthew Weinberg
How to Use HipChat to Collaborate and Build Culture - Matthew WeinbergAtlassian
 
Advanced Git Techniques: Subtrees, Grafting, and Other Fun Stuff
Advanced Git Techniques: Subtrees, Grafting, and Other Fun StuffAdvanced Git Techniques: Subtrees, Grafting, and Other Fun Stuff
Advanced Git Techniques: Subtrees, Grafting, and Other Fun StuffAtlassian
 
HipChat (allthethings) for (alltheteams)! - Rich Manalang
HipChat (allthethings) for (alltheteams)! - Rich ManalangHipChat (allthethings) for (alltheteams)! - Rich Manalang
HipChat (allthethings) for (alltheteams)! - Rich ManalangAtlassian
 
Summit 2014 Keynote
Summit 2014 KeynoteSummit 2014 Keynote
Summit 2014 KeynoteAtlassian
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git RightSven Peters
 

Destacado (20)

Spiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli KazatchkovSpiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli Kazatchkov
 
Getting Into Git
Getting Into GitGetting Into Git
Getting Into Git
 
Quality at Speed - Penny Wyatt
Quality at Speed - Penny WyattQuality at Speed - Penny Wyatt
Quality at Speed - Penny Wyatt
 
Advanced Git: Functionality and Features
Advanced Git: Functionality and FeaturesAdvanced Git: Functionality and Features
Advanced Git: Functionality and Features
 
Governing JIRA at Scale - Jordan Dea-Mattson
Governing JIRA at Scale - Jordan Dea-MattsonGoverning JIRA at Scale - Jordan Dea-Mattson
Governing JIRA at Scale - Jordan Dea-Mattson
 
Git pavel grushetsky
Git pavel grushetskyGit pavel grushetsky
Git pavel grushetsky
 
The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...
 
Code Management Workshop
Code Management WorkshopCode Management Workshop
Code Management Workshop
 
Git. Transition.
Git. Transition.Git. Transition.
Git. Transition.
 
Becoming a Git Master
Becoming a Git MasterBecoming a Git Master
Becoming a Git Master
 
Git case of the week4212.
Git case of the week4212.Git case of the week4212.
Git case of the week4212.
 
Subversion to Git Migration
Subversion to Git MigrationSubversion to Git Migration
Subversion to Git Migration
 
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
 
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchJIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
 
How to Use HipChat to Collaborate and Build Culture - Matthew Weinberg
How to Use HipChat to Collaborate and Build Culture - Matthew WeinbergHow to Use HipChat to Collaborate and Build Culture - Matthew Weinberg
How to Use HipChat to Collaborate and Build Culture - Matthew Weinberg
 
Advanced Git Techniques: Subtrees, Grafting, and Other Fun Stuff
Advanced Git Techniques: Subtrees, Grafting, and Other Fun StuffAdvanced Git Techniques: Subtrees, Grafting, and Other Fun Stuff
Advanced Git Techniques: Subtrees, Grafting, and Other Fun Stuff
 
HipChat (allthethings) for (alltheteams)! - Rich Manalang
HipChat (allthethings) for (alltheteams)! - Rich ManalangHipChat (allthethings) for (alltheteams)! - Rich Manalang
HipChat (allthethings) for (alltheteams)! - Rich Manalang
 
SCM case study of Marico
SCM case study of MaricoSCM case study of Marico
SCM case study of Marico
 
Summit 2014 Keynote
Summit 2014 KeynoteSummit 2014 Keynote
Summit 2014 Keynote
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 

Similar a Becoming a Git Master - Nicola Paolucci

Version Control ThinkVitamin
Version Control ThinkVitaminVersion Control ThinkVitamin
Version Control ThinkVitaminAlex Hillman
 
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
 
Ninja Git: Save Your Master
Ninja Git: Save Your MasterNinja Git: Save Your Master
Ninja Git: Save Your MasterNicola Paolucci
 
Source Code Management systems
Source Code Management systemsSource Code Management systems
Source Code Management systemsxSawyer
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it AgainGit Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it AgainLemi Orhan Ergin
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control SystemVictor Wong
 
Git - Get Ready To Use It
Git - Get Ready To Use ItGit - Get Ready To Use It
Git - Get Ready To Use ItDaniel Kummer
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017Lemi Orhan Ergin
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With GitNick Quaranto
 
VCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT WorkshopVCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT WorkshopAnis Ahmad
 
GTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSourceGTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSourceForest Mars
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlBecky Todd
 
A Quick Start - Version Control with Git
A Quick Start - Version Control with GitA Quick Start - Version Control with Git
A Quick Start - Version Control with GitDmitry Sheiko
 
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Lemi Orhan Ergin
 
Git why how when and more
Git   why how when and moreGit   why how when and more
Git why how when and moreGastón Acosta
 

Similar a Becoming a Git Master - Nicola Paolucci (20)

Version Control ThinkVitamin
Version Control ThinkVitaminVersion Control ThinkVitamin
Version Control ThinkVitamin
 
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
 
Ninja Git: Save Your Master
Ninja Git: Save Your MasterNinja Git: Save Your Master
Ninja Git: Save Your Master
 
Source Code Management systems
Source Code Management systemsSource Code Management systems
Source Code Management systems
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it AgainGit Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it Again
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
 
Git Power Routines
Git Power RoutinesGit Power Routines
Git Power Routines
 
Git - Get Ready To Use It
Git - Get Ready To Use ItGit - Get Ready To Use It
Git - Get Ready To Use It
 
Git
GitGit
Git
 
Gittalk
GittalkGittalk
Gittalk
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
 
VCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT WorkshopVCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT Workshop
 
GTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSourceGTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSource
 
Loading...git
Loading...gitLoading...git
Loading...git
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version control
 
A Quick Start - Version Control with Git
A Quick Start - Version Control with GitA Quick Start - Version Control with Git
A Quick Start - Version Control with Git
 
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
 
Git why how when and more
Git   why how when and moreGit   why how when and more
Git why how when and more
 

Más de Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Más de Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Último

Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 

Último (20)

Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 

Becoming a Git Master - Nicola Paolucci

  • 2. Becoming a Git Master: Concepts and Techniques to convert you into a master of the DVCS craft NICOLA PAOLUCCI • DEVELOPER ADVOCATE • ATLASSIAN • @DURDN
  • 3. Becoming a Git Master: Concepts and Techniques to convert you into a master of the DVCS craft NICOLA PAOLUCCI • DEVELOPER ADVOCATE • ATLASSIAN • @DURDN
  • 4. Marcus Bertrand Tim Pettersen I'm George. George McFly. I'm your density… I mean, your destiny Stefan Saasen Sarah Goff Dupont
  • 6. Here you’ll learn: PRO ALIASES & PROMPT HIDING STUFF CONFLICT RESOLUTION TIPS POLISH YOUR CODE PREVENT TAMPERING PROJECT DEPENDENCIES
  • 7. A pro command prompt
  • 8. PRO ALIASES & PROMPT Everyone has their favorite, but! Liquid prompt is awesome http://bit.do/liquid-prompt
  • 9. PRO ALIASES & PROMPT Everyone has their favorite, but! Liquid prompt is awesome http://bit.do/liquid-prompt
  • 11. Aliases are stored in .gitconfig
  • 12. In a section prefixed: [alias]
  • 13. PRO ALIASES & PROMPT Basic Alias Form Very simple: ls = log --oneline [vagrant@vagrant-ubuntu-trusty-64:/home/vagrant/buildstep] master ± git ls 90aa814 Merge pull request #85 from marqu3z/master f1eb16b overwrite source.list e6b9d16 change repo before prepare task 8bc10c0 Fix for deprecated repository e34d861 Link to buildpacks.txt instead 4502635 Merge pull request #76 from elia/fix-72-no-buildpack-bundle-install 38be796 Bundle install ain't needed against the buildpack
  • 14. PRO ALIASES & PROMPT You can do great things with just this For example: amend the last commit with everything I have here uncommitted and new caa = commit -a --amend -C HEAD
  • 15. You can’t pass parameters to simple aliases :(
  • 18. PRO ALIASES & PROMPT For multiple commands or complex parameters use a bash function! You can escape to a shell with ! like this: my_alias = "!f() { <command> }; f”
  • 19. PRO ALIASES & PROMPT Some useful shortcuts and variables More in any bash manual $1 - first command line parameter $2 - second command line parameter $@ - all command line parameters passed
  • 20. Ma, it’s the mini-DSL I always wanted!
  • 21. PRO ALIASES & PROMPT What can you do with this? Cool cool things, for example add a Bitbucket remote: git remote add $1 https://bitbucket.org/$2.git;
  • 22. PRO ALIASES & PROMPT ra = "!f() { }; f" What can you do with this? Cool cool things, for example add a Bitbucket remote: git remote add $1 https://bitbucket.org/$2.git;
  • 23. PRO ALIASES & PROMPT ra = "!f() { }; f" What can you do with this? Cool cool things, for example add a Bitbucket remote: git remote add $1 https://bitbucket.org/$2.git; git ra jsmith jsmith/prj
  • 24. PRO ALIASES & PROMPT ra = "!f() { }; f" What can you do with this? Cool cool things, for example add a Bitbucket remote: git remote add $1 https://bitbucket.org/$2.git; git ra jsmith jsmith/prj
  • 25. PRO ALIASES & PROMPT Get all the alias goodness on Bitbucket http://bit.do/git-aliases
  • 26. Powers of invisibility © http://www.amigosdosbichos.org/
  • 27. Powers of invisibility © http://www.amigosdosbichos.org/
  • 28. Tell git which files or folders to ignore in .gitignore
  • 29. What if the file is already committed?!
  • 31. POWERS OF INVISIBILITY Hide files from Different from .gitignore, it hides committed files git update-index --assume-unchanged <file> very useful with git-svn
  • 32. POWERS OF INVISIBILITY Hide files from Revert it with: git update-index --no-assume-unchanged <file> remember to add --no
  • 33. POWERS OF INVISIBILITY List assumed unchanged files git ls-files -v | grep ^h Useful as alias (see alias list from before)
  • 36. What is a conflict?
  • 37. PRO ALIASES & PROMPT A word on terminology What do ours and theirs mean when solving conflicts? Current checked out branch !!! --ours
  • 38. PRO ALIASES & PROMPT A word on terminology What do ours and theirs mean when solving conflicts? Current checked out branch !!! --ours Commit coming in (i.e. via merge) !!! --theirs
  • 39. PRO ALIASES & PROMPT A word on terminology What do ours and theirs mean when solving conflicts? Current checked out branch !!! --ours Commit coming in (i.e. via merge) !!! --theirs
  • 40. PRO ALIASES & PROMPT Basics for easy conflict resolution The common commands are: $ git checkout --ours/--theirs <file> Check back out our own/their own version of the file
  • 41. PRO ALIASES & PROMPT Basics for easy conflict resolution The common commands are: $ git checkout --ours/--theirs <file> Check back out our own/their own version of the file $ git add <file> Add the change to the index will resolve the conflict
  • 42. PRO ALIASES & PROMPT Aliases for easy conflict resolution Add these to [alias] in .gitconfig: git checkout --ours $@ && git add $@;
  • 43. PRO ALIASES & PROMPT Aliases for easy conflict resolution Add these to [alias] in .gitconfig: ours = "!f() { git checkout --ours $@ && git add $@; }; f"
  • 44. PRO ALIASES & PROMPT rerere resolve! Reuse Recorded Resolution will help you when dealing with repetitive and similar merge conflicts. $ git config --global rerere.enabled true Turns it on and forget about it
  • 45. PRO ALIASES & PROMPT Sample output rerere $ git add hello.rb $ git commit Recorded resolution for 'hello.rb'. [master 68e16e5] Merge branch 'i18n'
  • 46. PRO ALIASES & PROMPT Sample output rerere $ git add hello.rb $ git commit Recorded resolution for 'hello.rb'. [master 68e16e5] Merge branch 'i18n' Auto-merging hello.rb CONFLICT (content): Merge conflict in hello.rb Resolved 'hello.rb' using previous resolution.
  • 47. Cover your tracks (aka polish your code)
  • 48. Cover your tracks (aka polish your code)
  • 49. POLISH YOUR CODE What is a rebase? It’s a way to replay commits, one by one, on top of a branch MASTER FEATURE
  • 50. POLISH YOUR CODE What is a rebase? It’s a way to replay commits, one by one, on top of a branch MASTER FEATURE
  • 51. POLISH YOUR CODE What is a rebase? It’s a way to replay commits, one by one, on top of a branch MASTER FEATURE
  • 52. POLISH YOUR CODE What is a rebase? It’s a way to replay commits, one by one, on top of a branch MASTER FEATURE
  • 53. POLISH YOUR CODE What is a rebase? It’s a way to replay commits, one by one, on top of a branch MASTER FEATURE Don’t use!
  • 54. POLISH YOUR CODE What is a rebase? Correct way to use rebase to update a feature branch MASTER FEATURE
  • 55. POLISH YOUR CODE What is a rebase? Correct way to use rebase to update a feature branch MASTER FEATURE
  • 56. POLISH YOUR CODE What is an --interactive rebase? It’s a way to replay commits, one by one, deciding interactively what to do with each PICK! SQUASH REWORD! FIXUP EDIT ! EXEC
  • 57. POLISH YOUR CODE --autosquash Automatically modify the todo list of rebase --interactive by annotating commits $ git config --global rebase.autosquash true Turns on the feature
  • 58. POLISH YOUR CODE --autosquash You can prepend commit messages with: git commit -m “squash! …" git commit -m “fixup! …" git commit -m “reword! …" etc… Rebase task list will be then prepopulated
  • 59. CUSTOMARY WARNING! rebase rewrites history! Treat this power with great care. Only rewrite history of local branches or…
  • 61. Always a balancing act Security DevSpeed
  • 62. PREVENT TAMPERING Lock down your repo Edit .git/config in the [receive] section: # no rewriting history denyNonFastForwards = true ! # no deleting history denyDeletes = true ! # check object consistency fsckObjects = true
  • 63. Reject force push, Luke Git project has already an update hook ‘update-paranoid’ that is designed to reject history rewriting updates http://bit.do/update-paranoid
  • 66. PREVENT TAMPERING Impersonating Authors is easy with $ git commit -m "I'm Luke" $ git commit --author "Elvis <elvis@graceland.net>" -m "I'm elvis" commit a9f0967cba236465d6cb68247.. Author: Elvis <elvis@graceland.net> Date: Mon Apr 22 18:06:35 2013 -0500 ! I'm Elvis ! commit d6eb7572cbb4bdd8e2aaa5c90.. Author: Luke <luke@tatooine.com> Date: Mon Apr 22 18:04:54 2013 -0500 ! I'm Luke
  • 67. PREVENT TAMPERING Finally you can sign/verify tags git tag -s <tag_name> -m “message” Sign a tag with your GPG key git tag -v <tag_name> Verifies that the signature is valid
  • 68. Signing release tags is often all you need
  • 69. PREVENT TAMPERING Aside on GPG The GNU Privacy Guard GnuPG allows to encrypt and sign your data and communication, features a versatile key management system.
  • 70. PREVENT TAMPERING Harden up by signing things Sample gpg commands to get you started:
  • 71. PREVENT TAMPERING Harden up by signing things Sample gpg commands to get you started: gpg --gen-key Generate your GPG keys
  • 72. PREVENT TAMPERING Harden up by signing things Sample gpg commands to get you started: gpg --gen-key Generate your GPG keys gpg -k List your keys
  • 73. PREVENT TAMPERING Harden up by signing things Sample gpg commands to get you started: gpg --gen-key Generate your GPG keys gpg -k List your keys gpg -a --export <keyid> Export your key
  • 74. PREVENT TAMPERING Hide files in raw objects The way the Linux kernel hackers do it git hash-object -w <file>
  • 75. PREVENT TAMPERING Hide files in raw objects The way the Linux kernel hackers do it actually writes into the object db git hash-object -w <file>
  • 76. PREVENT TAMPERING Hide files in raw objects The way the Linux kernel hackers do it actually writes into the object db git hash-object -w <file> Remember to associate a tag to it or it will be garbage collected
  • 77. PREVENT TAMPERING Store your signature in Simple! Add a tag referencing your public key gpg -a --export <keyid> | git hash-object -w --stdin Store your public key in a raw object
  • 78. PREVENT TAMPERING Store your signature in Simple! Add a tag referencing your public key gpg -a --export <keyid> | git hash-object -w --stdin Store your public key in a raw object git tag nicks-key 65704f3… Tag the raw object with a label
  • 79. PREVENT TAMPERING Store your signature in Simple! Add a tag referencing your public key gpg -a --export <keyid> | git hash-object -w --stdin Store your public key in a raw object git tag nicks-key 65704f3… Tag the raw object with a label raw object id
  • 80. PREVENT TAMPERING Import other public keys git cat-file -p tims-key | gpg --import Import a GPG key from a tag
  • 81. PREVENT TAMPERING Finally you can sign/verify tags git tag -s <tag_name> -m “message” Sign a tag with your GPG key git tag -v <tag_name> Verifies that the signature is valid
  • 83. How do you handle project dependencies with ?
  • 84. Splitting up a project is painful, for so many reasons
  • 85. Use a build/dependency tool instead of
  • 86. GIT AND PROJECT DEPENDENCIES I’ll give you an incomplete list of examples! Java Nodejs Javascript Python Pip easy-install Ruby
  • 87. GIT AND PROJECT DEPENDENCIES I’ll give you an incomplete list of examples! (2) C# C++ c-make Objective C PHP Go godep
  • 88. Another possibility: use git submodule
  • 90. Use other build and cross-stack dependency tools
  • 91. GIT AND PROJECT DEPENDENCIES For example you can check out: •Android Repo (http://bit.do/android-repo) •Repobuild (chrisvana / repobuild) •Chromium depot_tools (http://bit.do/depot-tools) •Facebook Buck (http://facebook.github.io/buck/) •Twitter Pants (http://bit.do/twitter-pants)
  • 92. PRO ALIASES & PROMPT Review these ideas online http://bit.do/git-deps
  • 93. Thank you! NICOLA PAOLUCCI • DEVELOPER ADVOCATE • ATLASSIAN • @DURDN
  • 94. POWERS OF INVISIBILITY Hide files from • Level One • Level Two • Level Two • Level Two • Level One CODE FONT: <html xmlns="http://www.w3.org/1999/xhtml">
  • 95. POWERS OF INVISIBILITY Page title here • Level One • Level Two • Level Two • Level Two • Level One
  • 96. Page title here • Level One • Level Two • Level Two • Level Two • Level One
  • 97. Page title here Page Title Here • Level One • Level Two • Level Two • Level Two • Level One
  • 98. Page title here • Level One • Level Two • Level Two • Level Two • Level One
  • 99.
  • 101. Just text by itself, for impact.
  • 102. Just text by itself, for impact.
  • 103. Just text by itself, for impact.
  • 104. Just text by itself, for impact.
  • 105. Just text by itself, for impact.
  • 106. Type Quote Here And Move Both Quotation Marks To The Beginning And End Of The Quote. Lorem Ipsum Dolor Sit Amet, Conse Cetur Ading Elit. DAVID HANDLY, GLOBOCHEM ” “
  • 107. Big cool statistic 2,569 Add-Ons in Marketplace
  • 108.
  • 109. 60 45 30 15 0 2007 2008 2009 2010 Region 1 Region 2 Region 3 Page title here
  • 110. 40% 30% 20% 10% 2007 2008 2009 2010 Page title here
  • 111. Page title here COLUMN TITLE COLUMN TITLE COLUMN TITLE Content Content Content Content Content Content Content Content Content Content