Git and GitHub Workflows at the Utah JUG

Git and GitHub Workflows at the Utah JUG

The Git version control system and GitHub collaboration platform offer a myriad of innovative and classic development workflow options. The wide range of opinions about these on the Internet can make it challenging to nimbly make wise Git workflow decisions for your team's next project.

In this presentation, Matthew will provide a tour of successful workflow patterns harvested from 7 years of studying and working with open source projects, small and large scale businesses, and governmental agencies employing everything from waterfall to fully agile processes. Flows will feature live demonstrations of the supporting Git and GitHub commands.

A little guidance can go a long way in helping you navigate the new world of distributed version control, and this talk will help you make informed choices of the Git features you'll use, the branching patterns you'll leverage, and the way you will integrate your chosen pattern with your team's development practices.

This presentation was given to the Utah Java Users Group on August 21st, 2014.

Bededa744012c87721d68f69342f81b0?s=128

Matthew McCullough

August 21, 2014
Tweet

Transcript

  1. 1.

    Git and GitHub Workflows Information to aid your VCS and

    branching decisions ! a discussion with Matthew McCullough
  2. 10.

    Git and GitHub Workflows GitHub Flow Git Flow Rebase It

    Squash It Linear Fast iterations Git Project Workflow Flow Types Aims Long-lived release branches Maintenance Commands rebase master merge --squash rebase -i commit —amend pull -r bisect Easy regression discovery Developer on boarding Continuous Integration Build all branches Version Control UI Handles rebased branches? Triggers UI updates on merges? Pull Requests Commit keywords: “fixes #22” revert Setting up jobs Push branch to production Chatops Deploying to branches Reverse merges merge master topic Deployments API GitHub Releases API Semantic versioning best practices Teams Solo 1-5 5-15 15-50 50-150 150+ reset --hard reset --soft rebase --autosquash -i GitHub Deployments API Centralized Decentralized ➊
  3. 12.

  4. 13.
  5. 14.
  6. 18.
  7. 20.
  8. 25.
  9. 26.
  10. 27.
  11. 28.
  12. 31.
  13. 32.
  14. 38.
  15. 40.

    Time release branches master develop hotfixes feature branches Feature for

    future release Major feature for next release Severe bug fixed for production: hotfix 0.2 Tag 0.1 Tag 0.2 Incorporate bugfix in develop
  16. 41.

    Tag 1.0 From this point on, “next release” means the

    release after 1.0 Bugfixes from rel. branch may be continuously merged back into develop Only bugfixes! 1.0
  17. 43.
  18. 45.
  19. 51.
  20. 53.

  21. 55.
  22. 61.

    $ git rebase master $ git rebase -i <SHA> $

    git rebase --autosquash -i <SHA> ➍
  23. 63.

    $ git bisect start $ git bisect good $ git

    bisect bad $ git bisect run $ git bisect log ➍