SlideShare una empresa de Scribd logo
1 de 21
a handful of Git
workflows for the
      agilist

        steven harman
    twitter: stevenharman
   http://stevenharman.net
stop worrying
   and start
loving The Git.
picture Git


image via: http://nvie.com/git-model
basic branch/feature
      workflow
remote Git repository (origin)




                   master
remote Git repository (origin)




                                    master




                local Git repository (your clone)


:> git clone git@github.com:stevenharman/foo.git
:> cd foo
:master>

                                   master    origin/master
remote Git repository (origin)




                                    master




                local Git repository (your clone)



:master> git checkout -b feature
:feature> [... hackity-hack-hack ...]
:feature> git commit -am ‘did something awesome.’

                  feature
                                   master    origin/master
remote Git repository (origin)



// someone else pushed a change to the remote.
                                    master

                                    master




                local Git repository (your clone)




                  feature
                                   master    origin/master
remote Git repository (origin)




                                    master

                                    master




                local Git repository (your clone)




:feature> [... more hackity-hack-hack ...]
:feature> git commit -am ‘more awesomeness. bacon!’

                  feature

                  feature
                                   master    origin/master
remote Git repository (origin)




                                    master

                                    master




                local Git repository (your clone)




:feature> git fetch origin

                  feature
                                    origin/master
                  feature
                                   master    origin/master
remote Git repository (origin)




                                    master

                                    master




                local Git repository (your clone)




:feature> git checkout master
:master> git merge origin/master

                  feature
                                   master     origin/master
                                    origin/master
                  feature
                                   master     origin/master
remote Git repository (origin)




                                    master

                                    master




                local Git repository (your clone)




:master> git merge feature
                                   master

                  feature
                                    origin/master
                                   master     origin/master
                                    origin/master
                  feature
                                   master     origin/master
remote Git repository (origin)




                    master

                    master




local Git repository (your clone)




  feature
                   master     origin/master
                    origin/master
  feature
                   master     origin/master
remote Git repository (origin)




                                    master

                                    master




                local Git repository (your clone)


:master> git checkout feature
:feature> git rebase master
                  feature
                                   master

                  feature
                                    origin/master
                                   master     origin/master
                                    origin/master
                  feature
                                   master     origin/master
remote Git repository (origin)




                                    master

                                    master




                local Git repository (your clone)


:feature> git checkout master
:master> git merge feature
                       feature
                  feature          master
                                   master

                  feature
                                    origin/master
                                    origin/master
                                   master     origin/master
                  feature
                                   master     origin/master
remote Git repository (origin)



                                    master




                                    master




                local Git repository (your clone)



:master> git push origin master

                       feature
                  feature          master     origin/master
                                   master

                  feature
                                    origin/master
                                    origin/master
                                   master     origin/master
                  feature
                                   master     origin/master
remote Git repository (origin)



                                    master




                                    master




                local Git repository (your clone)



:master> git branch -d feature

                       feature
                  feature          master     origin/master
                                   master

                  feature
                                    origin/master
                                    origin/master
                                   master     origin/master
                  feature
                                   master     origin/master
derivations

• branch for a spike
• branches for concurrent design
• push/pull changes directly from teammate
• stashing changes temporarily
• reset to prior commit (in case of FUBAR)
some cool tools for
    your Git utility belt
•   git reset
•   git cherry-pick
•   git stash
•   git bisect
•   git add -p
•   git reflog
•   git svn
get Git info

• http://ProGit.org (the site for THE book)
• http://gitready.com
• http://gitcasts.com
• http://whygitisbetterthanx.com/
• http://delicious.com/stevenharman/git
fork these slides from
http://github.com/stevenharman/git-workflows




                 steven harman
             twitter: stevenharman
            http://stevenharman.net

Más contenido relacionado

Similar a Git workflow

Why You Should Be Using Git
Why You Should Be Using GitWhy You Should Be Using Git
Why You Should Be Using GitFrancisco Vieira
 
Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Lemi Orhan Ergin
 
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: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started PresentationNap Ramirez
 
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 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
 
Gitting the Most From Git
Gitting the Most From GitGitting the Most From Git
Gitting the Most From GitChris Miller
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remotoRodrigo Branas
 
Distributed Developer Workflows using Git
Distributed Developer Workflows using GitDistributed Developer Workflows using Git
Distributed Developer Workflows using GitSusan Potter
 
Jedi Mind Tricks for Git
Jedi Mind Tricks for GitJedi Mind Tricks for Git
Jedi Mind Tricks for GitJan Krag
 

Similar a Git workflow (20)

Presentacion git
Presentacion gitPresentacion git
Presentacion git
 
Why You Should Be Using Git
Why You Should Be Using GitWhy You Should Be Using Git
Why You Should Be Using Git
 
Git
GitGit
Git
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
 
Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017
 
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: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started Presentation
 
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 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 in 5 Minutes
Git in 5 MinutesGit in 5 Minutes
Git in 5 Minutes
 
Gitting the Most From Git
Gitting the Most From GitGitting the Most From Git
Gitting the Most From Git
 
T3dd10 git
T3dd10 gitT3dd10 git
T3dd10 git
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
 
Wokshop de Git
Wokshop de Git Wokshop de Git
Wokshop de Git
 
Loading...git
Loading...gitLoading...git
Loading...git
 
Git
GitGit
Git
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
 
Distributed Developer Workflows using Git
Distributed Developer Workflows using GitDistributed Developer Workflows using Git
Distributed Developer Workflows using Git
 
Jedi Mind Tricks for Git
Jedi Mind Tricks for GitJedi Mind Tricks for Git
Jedi Mind Tricks for Git
 

Último

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 

Último (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 

Git workflow

  • 1. a handful of Git workflows for the agilist steven harman twitter: stevenharman http://stevenharman.net
  • 2. stop worrying and start loving The Git.
  • 3. picture Git image via: http://nvie.com/git-model
  • 5. remote Git repository (origin) master
  • 6. remote Git repository (origin) master local Git repository (your clone) :> git clone git@github.com:stevenharman/foo.git :> cd foo :master> master origin/master
  • 7. remote Git repository (origin) master local Git repository (your clone) :master> git checkout -b feature :feature> [... hackity-hack-hack ...] :feature> git commit -am ‘did something awesome.’ feature master origin/master
  • 8. remote Git repository (origin) // someone else pushed a change to the remote. master master local Git repository (your clone) feature master origin/master
  • 9. remote Git repository (origin) master master local Git repository (your clone) :feature> [... more hackity-hack-hack ...] :feature> git commit -am ‘more awesomeness. bacon!’ feature feature master origin/master
  • 10. remote Git repository (origin) master master local Git repository (your clone) :feature> git fetch origin feature origin/master feature master origin/master
  • 11. remote Git repository (origin) master master local Git repository (your clone) :feature> git checkout master :master> git merge origin/master feature master origin/master origin/master feature master origin/master
  • 12. remote Git repository (origin) master master local Git repository (your clone) :master> git merge feature master feature origin/master master origin/master origin/master feature master origin/master
  • 13. remote Git repository (origin) master master local Git repository (your clone) feature master origin/master origin/master feature master origin/master
  • 14. remote Git repository (origin) master master local Git repository (your clone) :master> git checkout feature :feature> git rebase master feature master feature origin/master master origin/master origin/master feature master origin/master
  • 15. remote Git repository (origin) master master local Git repository (your clone) :feature> git checkout master :master> git merge feature feature feature master master feature origin/master origin/master master origin/master feature master origin/master
  • 16. remote Git repository (origin) master master local Git repository (your clone) :master> git push origin master feature feature master origin/master master feature origin/master origin/master master origin/master feature master origin/master
  • 17. remote Git repository (origin) master master local Git repository (your clone) :master> git branch -d feature feature feature master origin/master master feature origin/master origin/master master origin/master feature master origin/master
  • 18. derivations • branch for a spike • branches for concurrent design • push/pull changes directly from teammate • stashing changes temporarily • reset to prior commit (in case of FUBAR)
  • 19. some cool tools for your Git utility belt • git reset • git cherry-pick • git stash • git bisect • git add -p • git reflog • git svn
  • 20. get Git info • http://ProGit.org (the site for THE book) • http://gitready.com • http://gitcasts.com • http://whygitisbetterthanx.com/ • http://delicious.com/stevenharman/git
  • 21. fork these slides from http://github.com/stevenharman/git-workflows steven harman twitter: stevenharman http://stevenharman.net

Notas del editor

  1. \n
  2. git is awesome - if you’re using it, you know. if not, don’t be scared, give it a try.\n
  3. don’t be scared, it’s not as bad as it looks.\n
  4. \n
  5. let’s assume there already exists a Git repository somewhere in the cloud. like maybe... The GitHub.\n
  6. start by cloning a copy of that remote repository (conventionally known as “origin”) to our local machine.\n
  7. we need to work a sweet new feature. step 1) create a local branch to work in. step 2) hackity-hack-hack. step 3) commit the changes. [repeat steps 2 & 3 as necessary]\n
  8. a teammate, or maybe even another you, has pushed some new changes.\n
  9. [still continuing steps 2 & 3 from earlier]\n
  10. get any new changes that are on the remote, but not local.\n
  11. merge the changes from the remote “master” branch into our local “master” branch. because there are no divergent changes on our local master, this is a “fast-forward merge” along the master’s graph.\n
  12. now we need to merge our feature into “master” so we can release it. \n\noption 1) merge feature in. [keeps all info, but we end up with a noisy history graph that’s hard to follow]\n
  13. OR [go back to just after we merged in the fetched changes]\n
  14. option 2) rebase our “feature” branch on top of “master”.\n\nthis “rewinds” our branch back to where it started, then “fast-forwards” along “master”, and finally re-applies each of our change sets. afterward, our local commits have a new SHA1 hash, meaning they are different objects than before rebase, however, the original committer info & meta-data are preserved.\n
  15. now we can merge our changes into “master.” because we already have all of the changes that exist in “master,” this results in a “fast-forward” merge onto “master”.\n
  16. finally we share our sweet, sweet bacon with the rest of the world by pushing our local changes to the remote (origin).\n
  17. now everyone can enjoy the bacony-goodness!\n
  18. \n
  19. add -p to interactively stage hunks of a file change.\n
  20. \n
  21. feel free to hit me up with any questions.\n