SlideShare a Scribd company logo
Managing
E-commerce systems
codebase with Git
Bruno Ricardo Siqueira
About me
Bruno Ricardo Siqueira
Brazilian, working as Senior Software
Developer at Smartbox, ~10 years of
software development experience, PHP
evangelist, Git lover, Rock N' Roll fan,
Sci-fi addicted, MTG hobbyist player.
brunoric.info
linkedin.com/in/brunoric
twitter.com/brunoric
github.com/brunoric
● Motivation
○ Why your E-commerce system need a VCS?
○ Why Git?
● Git flows
○ Why use or create a flow?
○ Centralized workflow
○ Feature branch workflow
○ Gitflow workflow
○ Forking workflow
○ Dictator and lieutenants workflow
● Git features and tools
Agenda
Managing E-commerce systems codebase with Git
Motivation
Motivation
Why your E-commerce
system need a VCS?
Managing e commerce systems codebase with git
Motivation - Why your E-commerce system need a VCS?
Long-term change history
of every file
Managing e commerce systems codebase with git
Motivation - Why your E-commerce system need a VCS?
Traceability
Managing e commerce systems codebase with git
Motivation - Why your E-commerce system need a VCS?
Branching and merging
Motivation - Why your E-commerce system need a VCS?
Motivation - Why your E-commerce system need a VCS?
Conflict resolution
Managing e commerce systems codebase with git
Motivation - Why your E-commerce system need a VCS?
● Improve automation for daily tasks
● Avoid code loss
● Backup and restore strategy
● Prototyping
● Find when a specific bug or feature was introduced
● …
● Continuous integration and Continuous delivery
Motivation
Why Git?
Motivation - Why Git?
“I'm an egotistical bastard, and I
name all my projects after
myself. First Linux, now git.”
- Linus Torvalds
Motivation - Why Git?
Motivation - Why Git?
Motivation - Why Git?
Managing E-commerce systems codebase with Git
Git Flows
Git Flows
Why use or create a flow?
Git Flows - Why use or create a flow?
● With Git, branching and merging is cheap
● Flows bring history consistency
● Provide a logical way of reading the history
● Facilitate automation
● Facilitate new joiners ramp up
● Avoid mistakes (unintended pushes, merges, unmerged branches, etc)
● ...
Git Flows
Centralized workflow
Git Flows - Centralized workflow
● Like Subversion with
benefits:
○ developers have their
own local repository
○ Git branches are
fail-safe
○ Merge process is
painless
Git Flows - Centralized workflow
Git Flows - Centralized workflow
git push origin master
Git Flows - Centralized workflow
Git Flows - Centralized workflow
git push origin master
Git Flows - Centralized workflow
git push origin master
Git Flows - Centralized workflow
error: failed to push some refs to '/path/to/repo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.git push origin master
Git Flows - Centralized workflow
git pull --rebase origin master
Git Flows - Centralized workflow
Git Flows - Centralized workflow
git add <some-file>
git rebase --continue
git push origin master
Git Flows
Feature branch workflow
Git Flows - Feature branch workflow
Git Flows - Feature branch workflow
Git Flows - Feature branch workflow
Git Flows - Feature branch workflow
Git Flows - Feature branch workflow
Git Flows - Feature branch workflow
Git Flows - Feature branch workflow
Git Flows
Gitflow workflow
Git Flows - Gitflow workflow
Git Flows - Gitflow workflow
Git Flows - Gitflow workflow
Git Flows - Gitflow workflow
Git Flows - Gitflow workflow
Git Flows - Gitflow workflow
git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop
git checkout -b some-feature develop
git status
git add <some-file>
git commit
Git Flows - Gitflow workflow
git pull origin develop
git checkout develop
git merge some-feature
git push
git branch -d some-feature
Git Flows - Gitflow workflow
git checkout -b release-0.1 develop
Git Flows - Gitflow workflow
git checkout master
git merge release-0.1
git push
git checkout develop
git merge release-0.1
git push
git branch -d release-0.1
Git Flows - Gitflow workflow
git checkout master
git merge release-0.1
git push
git checkout develop
git merge release-0.1
git push
git branch -d release-0.1
Git Flows
Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows - Forking workflow
Git Flows
Dictator and lieutenants
workflow
Git Flows - Dictator and lieutenants workflow
Managing E-commerce systems codebase with Git
Git features and tools
Git features and tools
git log
git log [<options>] [<revision range>] [[--] <path>…​]
Git features and tools - git log
Git features and tools - git log
Git features and tools - git log
Git features and tools
git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
[-S[<keyid>]] <commit>…​
git cherry-pick --continue
git cherry-pick --quit
git cherry-pick --abort
git cherry-pick
Git features and tools - git cherry-pick
Git features and tools
git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
[-S[<keyid>]] <commit>…​
git cherry-pick --continue
git cherry-pick --quit
git cherry-pick --abort
git stash
Git features and tools - git stash
Git features and tools - git stash
Git features and tools - git stash
git stash
git checkout another-branch
phpunit
… # do some changes ...
git stash [pop/apply]
… # do another changes ...
phpunit
… # fix test issues
git add -p
… # do more fixes
git add .
Git features and tools
git bisect <subcommand> <options>
git bisect
Git features and tools - git bisect
git bisect start
git checkout BAD-POINT
git bisect bad
git checkout GOOD-POINT
git bisect good
Git features and tools - git bisect
Git features and tools
What else?
Git features and tools - What else?
git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…​
git revert --continue
git revert --quit
git revert --abort
git revert
Git features and tools - What else?
git apply [--stat] [--numstat] [--summary] [--check] [--index] [--3way]
[--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
[--allow-binary-replacement | --binary] [--reject] [-z]
[-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached]
[--ignore-space-change | --ignore-whitespace]
[--whitespace=(nowarn|warn|fix|error|error-all)]
[--exclude=<path>] [--include=<path>] [--directory=<root>]
[--verbose] [--unsafe-paths] [<patch>…​]
git apply
Git features and tools - What else?
git hooks
Git features and tools - What else?
Managing E-commerce systems codebase with Git
Credits and reference
Git Flows - Credits and reference
● Tutorials, documentation and other presentations:
○ A successful Git branching model - Vincent Driessen:
http://nvie.com/posts/a-successful-git-branching-model
○ Atlassian Advanced Git Tutorials:
https://www.atlassian.com/git/tutorials/advanced-overview
○ Git - Distributed Workflows:
https://git-scm.com/book/it/v2/Distributed-Git-Distributed-Workflows
○ Git - Get Ready To Use It
http://www.slideshare.net/origamiaddict/git-get-ready-to-use-it
○ Git Tower:
https://www.git-tower.com/learn/git/ebook/en/command-line/appendix
/from-subversion-to-git
Git Flows - Credits and reference
● Flow images:
○ Atlassian: https://www.atlassian.com/git/tutorials
○ Git SCM: https://git-scm.com/book
● Linus Torvalds image:
http://news.softpedia.com/news/Linus-Torvalds-presents-a-new-software-ma
nagement-configuration-system-1421.shtml
● Git bisect images:
http://five.agency/cut-your-way-through-problems-with-git-bisect
https://www.effectiveperlprogramming.com/wp-content/uploads/bisect1.png
● Git stash GIF:
http://thecodinglove.com/post/151285532543/git-stash
● Git hook image:
http://www.slideshare.net/PolishedGeek/git-hooked-using-git-hooks-to-impro
ve-your-software-development-process
Managing E-commerce systems codebase with Git
Thanks!

More Related Content

PDF
Essential git for developers
PDF
Advanced Git
PPTX
Why Aren't You Using Git Flow?
PDF
Git Workflow With Gitflow
PDF
Git and git flow
PPTX
Git and git workflow best practice
PDF
Git advanced
PDF
The Basics of Open Source Collaboration With Git and GitHub
Essential git for developers
Advanced Git
Why Aren't You Using Git Flow?
Git Workflow With Gitflow
Git and git flow
Git and git workflow best practice
Git advanced
The Basics of Open Source Collaboration With Git and GitHub

What's hot (20)

PPTX
Git Merge, Resets and Branches
PDF
Git introduction for Beginners
ODP
Git Flow - An Introduction
PDF
Git Tricks — git utilities that make life git easier
PPTX
Git like a Pro (How to use it as it was meant to)
PDF
Git for Beginners
PDF
Getting Started with Git
PPTX
Git & Github
PPTX
Git 101
PDF
Git flow Introduction
PPT
Git Introduction
PPTX
Git'in in 15
PPTX
Git'in on Windows
ODP
Open Innovation Lab (OIL) - 20150227 - GIT Intro Workshop
PPTX
2015-ghci-presentation-git_gerritJenkins_final
PDF
Git Educated About Git - 20 Essential Commands
PDF
Git Series. Episode 3. Git Flow and Github-Flow
PDF
Git collaboration
PPTX
Git Flow and JavaScript Coding Style
PPTX
Git n git hub
Git Merge, Resets and Branches
Git introduction for Beginners
Git Flow - An Introduction
Git Tricks — git utilities that make life git easier
Git like a Pro (How to use it as it was meant to)
Git for Beginners
Getting Started with Git
Git & Github
Git 101
Git flow Introduction
Git Introduction
Git'in in 15
Git'in on Windows
Open Innovation Lab (OIL) - 20150227 - GIT Intro Workshop
2015-ghci-presentation-git_gerritJenkins_final
Git Educated About Git - 20 Essential Commands
Git Series. Episode 3. Git Flow and Github-Flow
Git collaboration
Git Flow and JavaScript Coding Style
Git n git hub
Ad

Viewers also liked (8)

PDF
Vijay_Karthik
PPTX
Diagnóstico de problemas de hardware más comunes
PPTX
Mm. alimentos entre parientes
PDF
13.08.2010, NEWSWIRE, Issue 131
PPTX
Infoscan kinderen en jongeren_uitforum2015
DOCX
Vocab tattoos (global)
PPTX
Cyberbullying
DOCX
Survey Project Submission
Vijay_Karthik
Diagnóstico de problemas de hardware más comunes
Mm. alimentos entre parientes
13.08.2010, NEWSWIRE, Issue 131
Infoscan kinderen en jongeren_uitforum2015
Vocab tattoos (global)
Cyberbullying
Survey Project Submission
Ad

Similar to Managing e commerce systems codebase with git (20)

PPTX
Git One Day Training Notes
PDF
Introducing Git and git flow
PDF
Git workflows automat-it
PPTX
Git presentation bixlabs
PDF
Git with the flow
PDF
Improving your workflow with git
PDF
Git-flow workflow and pull-requests
PDF
Git and GitHub workflows
PPT
PPTX
Lets git to it
PPTX
git Technologies
PPT
Git presentation
KEY
Introduction To Git
PPTX
An introduction to Git
PPTX
An introduction to Git and GitFlow
PPTX
Git usage (Basics and workflow)
PDF
Download full ebook of Version Control With Git Jon Loeliger instant download...
PPTX
Learn Git - For Beginners and Intermediate levels
PPTX
01 - Git vs SVN
KEY
Git Basics at Rails Underground
Git One Day Training Notes
Introducing Git and git flow
Git workflows automat-it
Git presentation bixlabs
Git with the flow
Improving your workflow with git
Git-flow workflow and pull-requests
Git and GitHub workflows
Lets git to it
git Technologies
Git presentation
Introduction To Git
An introduction to Git
An introduction to Git and GitFlow
Git usage (Basics and workflow)
Download full ebook of Version Control With Git Jon Loeliger instant download...
Learn Git - For Beginners and Intermediate levels
01 - Git vs SVN
Git Basics at Rails Underground

More from Bruno Ricardo Siqueira (6)

PDF
Construindo aplicações CLI com Symfony Console
PDF
TDC SP 2015 - PHP7: better & faster
PDF
TDC SP 2015 - PHP7: melhor e mais rápido
PPTX
Fluxo de desenvolvimento de software utilizando Git
PDF
Impulsionando sua presença Online
PDF
Desenvolvendo e implantando aplicações PHP utilizando Docker
Construindo aplicações CLI com Symfony Console
TDC SP 2015 - PHP7: better & faster
TDC SP 2015 - PHP7: melhor e mais rápido
Fluxo de desenvolvimento de software utilizando Git
Impulsionando sua presença Online
Desenvolvendo e implantando aplicações PHP utilizando Docker

Recently uploaded (20)

PPT
Introduction Database Management System for Course Database
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
System and Network Administraation Chapter 3
PDF
System and Network Administration Chapter 2
PDF
medical staffing services at VALiNTRY
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Introduction to Artificial Intelligence
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
assetexplorer- product-overview - presentation
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Digital Strategies for Manufacturing Companies
PPTX
L1 - Introduction to python Backend.pptx
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Introduction Database Management System for Course Database
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
How to Choose the Right IT Partner for Your Business in Malaysia
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
System and Network Administraation Chapter 3
System and Network Administration Chapter 2
medical staffing services at VALiNTRY
Which alternative to Crystal Reports is best for small or large businesses.pdf
Introduction to Artificial Intelligence
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
assetexplorer- product-overview - presentation
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Designing Intelligence for the Shop Floor.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Reimagine Home Health with the Power of Agentic AI​
Digital Strategies for Manufacturing Companies
L1 - Introduction to python Backend.pptx
CHAPTER 2 - PM Management and IT Context
Computer Software and OS of computer science of grade 11.pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus

Managing e commerce systems codebase with git

  • 1. Managing E-commerce systems codebase with Git Bruno Ricardo Siqueira
  • 2. About me Bruno Ricardo Siqueira Brazilian, working as Senior Software Developer at Smartbox, ~10 years of software development experience, PHP evangelist, Git lover, Rock N' Roll fan, Sci-fi addicted, MTG hobbyist player. brunoric.info linkedin.com/in/brunoric twitter.com/brunoric github.com/brunoric
  • 3. ● Motivation ○ Why your E-commerce system need a VCS? ○ Why Git? ● Git flows ○ Why use or create a flow? ○ Centralized workflow ○ Feature branch workflow ○ Gitflow workflow ○ Forking workflow ○ Dictator and lieutenants workflow ● Git features and tools Agenda
  • 4. Managing E-commerce systems codebase with Git Motivation
  • 7. Motivation - Why your E-commerce system need a VCS? Long-term change history of every file
  • 9. Motivation - Why your E-commerce system need a VCS? Traceability
  • 11. Motivation - Why your E-commerce system need a VCS? Branching and merging
  • 12. Motivation - Why your E-commerce system need a VCS?
  • 13. Motivation - Why your E-commerce system need a VCS? Conflict resolution
  • 15. Motivation - Why your E-commerce system need a VCS? ● Improve automation for daily tasks ● Avoid code loss ● Backup and restore strategy ● Prototyping ● Find when a specific bug or feature was introduced ● … ● Continuous integration and Continuous delivery
  • 17. Motivation - Why Git? “I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.” - Linus Torvalds
  • 21. Managing E-commerce systems codebase with Git Git Flows
  • 22. Git Flows Why use or create a flow?
  • 23. Git Flows - Why use or create a flow? ● With Git, branching and merging is cheap ● Flows bring history consistency ● Provide a logical way of reading the history ● Facilitate automation ● Facilitate new joiners ramp up ● Avoid mistakes (unintended pushes, merges, unmerged branches, etc) ● ...
  • 25. Git Flows - Centralized workflow ● Like Subversion with benefits: ○ developers have their own local repository ○ Git branches are fail-safe ○ Merge process is painless
  • 26. Git Flows - Centralized workflow
  • 27. Git Flows - Centralized workflow git push origin master
  • 28. Git Flows - Centralized workflow
  • 29. Git Flows - Centralized workflow git push origin master
  • 30. Git Flows - Centralized workflow git push origin master
  • 31. Git Flows - Centralized workflow error: failed to push some refs to '/path/to/repo.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') hint: before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.git push origin master
  • 32. Git Flows - Centralized workflow git pull --rebase origin master
  • 33. Git Flows - Centralized workflow
  • 34. Git Flows - Centralized workflow git add <some-file> git rebase --continue git push origin master
  • 36. Git Flows - Feature branch workflow
  • 37. Git Flows - Feature branch workflow
  • 38. Git Flows - Feature branch workflow
  • 39. Git Flows - Feature branch workflow
  • 40. Git Flows - Feature branch workflow
  • 41. Git Flows - Feature branch workflow
  • 42. Git Flows - Feature branch workflow
  • 44. Git Flows - Gitflow workflow
  • 45. Git Flows - Gitflow workflow
  • 46. Git Flows - Gitflow workflow
  • 47. Git Flows - Gitflow workflow
  • 48. Git Flows - Gitflow workflow
  • 49. Git Flows - Gitflow workflow git clone ssh://user@host/path/to/repo.git git checkout -b develop origin/develop git checkout -b some-feature develop git status git add <some-file> git commit
  • 50. Git Flows - Gitflow workflow git pull origin develop git checkout develop git merge some-feature git push git branch -d some-feature
  • 51. Git Flows - Gitflow workflow git checkout -b release-0.1 develop
  • 52. Git Flows - Gitflow workflow git checkout master git merge release-0.1 git push git checkout develop git merge release-0.1 git push git branch -d release-0.1
  • 53. Git Flows - Gitflow workflow git checkout master git merge release-0.1 git push git checkout develop git merge release-0.1 git push git branch -d release-0.1
  • 55. Git Flows - Forking workflow
  • 56. Git Flows - Forking workflow
  • 57. Git Flows - Forking workflow
  • 58. Git Flows - Forking workflow
  • 59. Git Flows - Forking workflow
  • 60. Git Flows - Forking workflow
  • 61. Git Flows - Forking workflow
  • 62. Git Flows - Forking workflow
  • 63. Git Flows - Forking workflow
  • 64. Git Flows Dictator and lieutenants workflow
  • 65. Git Flows - Dictator and lieutenants workflow
  • 66. Managing E-commerce systems codebase with Git Git features and tools
  • 67. Git features and tools git log git log [<options>] [<revision range>] [[--] <path>…​]
  • 68. Git features and tools - git log
  • 69. Git features and tools - git log
  • 70. Git features and tools - git log
  • 71. Git features and tools git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S[<keyid>]] <commit>…​ git cherry-pick --continue git cherry-pick --quit git cherry-pick --abort git cherry-pick
  • 72. Git features and tools - git cherry-pick
  • 73. Git features and tools git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S[<keyid>]] <commit>…​ git cherry-pick --continue git cherry-pick --quit git cherry-pick --abort git stash
  • 74. Git features and tools - git stash
  • 75. Git features and tools - git stash
  • 76. Git features and tools - git stash git stash git checkout another-branch phpunit … # do some changes ... git stash [pop/apply] … # do another changes ... phpunit … # fix test issues git add -p … # do more fixes git add .
  • 77. Git features and tools git bisect <subcommand> <options> git bisect
  • 78. Git features and tools - git bisect git bisect start git checkout BAD-POINT git bisect bad git checkout GOOD-POINT git bisect good
  • 79. Git features and tools - git bisect
  • 80. Git features and tools What else?
  • 81. Git features and tools - What else? git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…​ git revert --continue git revert --quit git revert --abort git revert
  • 82. Git features and tools - What else? git apply [--stat] [--numstat] [--summary] [--check] [--index] [--3way] [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse] [--allow-binary-replacement | --binary] [--reject] [-z] [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached] [--ignore-space-change | --ignore-whitespace] [--whitespace=(nowarn|warn|fix|error|error-all)] [--exclude=<path>] [--include=<path>] [--directory=<root>] [--verbose] [--unsafe-paths] [<patch>…​] git apply
  • 83. Git features and tools - What else? git hooks
  • 84. Git features and tools - What else?
  • 85. Managing E-commerce systems codebase with Git Credits and reference
  • 86. Git Flows - Credits and reference ● Tutorials, documentation and other presentations: ○ A successful Git branching model - Vincent Driessen: http://nvie.com/posts/a-successful-git-branching-model ○ Atlassian Advanced Git Tutorials: https://www.atlassian.com/git/tutorials/advanced-overview ○ Git - Distributed Workflows: https://git-scm.com/book/it/v2/Distributed-Git-Distributed-Workflows ○ Git - Get Ready To Use It http://www.slideshare.net/origamiaddict/git-get-ready-to-use-it ○ Git Tower: https://www.git-tower.com/learn/git/ebook/en/command-line/appendix /from-subversion-to-git
  • 87. Git Flows - Credits and reference ● Flow images: ○ Atlassian: https://www.atlassian.com/git/tutorials ○ Git SCM: https://git-scm.com/book ● Linus Torvalds image: http://news.softpedia.com/news/Linus-Torvalds-presents-a-new-software-ma nagement-configuration-system-1421.shtml ● Git bisect images: http://five.agency/cut-your-way-through-problems-with-git-bisect https://www.effectiveperlprogramming.com/wp-content/uploads/bisect1.png ● Git stash GIF: http://thecodinglove.com/post/151285532543/git-stash ● Git hook image: http://www.slideshare.net/PolishedGeek/git-hooked-using-git-hooks-to-impro ve-your-software-development-process
  • 88. Managing E-commerce systems codebase with Git Thanks!

Editor's Notes

  • #7: Version control without a version control system.
  • #9: Changes made by many individuals over development process. Creation and deletion of files. File changes. Different VCS tools differ on how well they handle the history. Usually includes the author, date and written notes. If the software is being actively worked on, almost everything can be considered an "older version" of the software.
  • #11: You can find when and who introduced any change. This is important to know more about the context of the code change.
  • #13: Branching and merging possibilities parallel work in an organized way. Different people can work in the same codebase supported by tools that will help you in reusing the code for another purpose (branching) and insert back you modifications (merging).
  • #15: A very important part is conflict resolution. With different people working in the same codebase, conflicts will happen for sure. You need tooling for solve this problem in an efficient way.
  • #16: Deploy. Code loss by moving files or wrongly merging changes. You can easily make changes in your system. Having the complete history enables going back to previous versions to help in root cause analysis for bugs and it is crucial when needing to fix problems in older versions of software. CI and CD.
  • #18: Git development began in April 2005, after many developers of the Linux Kernel gave up access to BitKeeper. The legend says that Linus Torvalds started the development in a weekend and in the same weekend Git was already using itself as version control system. Junio C Hamano is the current lead of Git project.
  • #19: Fast. Decentralized. Open-source. Huge user-base. Community oriented (Github, Gitlab, Bitbucket, etc). Extensible.
  • #20: Unlike SVN, git provides the full repository locally instead of just a working copy.
  • #21: Git staging area is an important concept. You work on your local repository, do your changes, stage them (git add), commit them (git commit) and publish them (git push).
  • #26: First, it gives every developer their own local copy of the entire project. Unlike SVN, Git branches are designed to be a fail-safe mechanism for integrating code and sharing changes between repositories.
  • #27: With this flow the goal is to have a linear history as much as possible.
  • #28: John pushes his code to master.
  • #29: But again, unlike Subversion, Git gives you the flexibility to branch out locally, as many as you want.
  • #30: Mary also tries to push her changes.
  • #31: The push is rejected.
  • #32: Mary needs to update her local branch.
  • #33: Mary pulls the remote changes. In Git, pull is an alias to git fetch and git merge, but with the --rebase option it's a git fetch and git rebase.
  • #34: With the rebase operation, the changes made by Mary will be applied on top of John's code.
  • #35: If the code has any conflicts those need to be solved and staged before continuing the rebase process. Everything is done locally, so to publish your changes you will need to push them.
  • #37: Let's use Git as it was designed to be used, with decentralized contribution.
  • #38: Branch out for a new feature.
  • #39: Do implementations.
  • #40: Finish implementations.
  • #41: Push feature.
  • #42: Feature is added to the main branch.
  • #43: Pull latest changes from main repository.
  • #45: Gitflow is a workflow proposed by Vincent Driessen in 2010. He was working at the time for nvie (now GitPrime), and they were using Gitflow as a branching model for internal projects. Gitflow is a strict framework for branching and merging using the concepts of the Feature workflow as base.
  • #46: Historical Branches: Instead of a single master branch, this workflow uses two branches to record the history of the project. The master branch stores the official release history, and the develop branch serves as an integration branch for features. It's also convenient to tag all commits in the master branch with a version number.
  • #47: Features branches: Each new feature should reside in its own branch, which can be pushed to the central repository for backup/collaboration. But, instead of branching off of master, feature branches use develop as their parent branch. When a feature is complete, it gets merged back into develop. Features should never interact directly with master.
  • #48: Release branches: Once develop has acquired enough features for a release, you branch out a release from develop. Creating this branch starts the next release cycle, so no new features can be added after this point - only bug fixes. Once it's ready to ship, the release gets merged into master and tagged with a version number. In addition, it should be merged back into develop, which may have progressed since the release was initiated.
  • #49: Maintenance Branches: Maintenance or “hotfix” branches are used to quickly patch production releases. This is the only branch that should fork directly off of master. As soon as the fix is complete, it should be merged into both master and develop (or the current release branch), and master should be tagged with an updated version number.
  • #56: Instead of using a single server-side repository to act as the “central” codebase, it gives every developer a server-side repository. This means that each contributor has not one, but two Git repositories: a private local one and a public server-side one. Very distributed!
  • #57: As with any Git-based project, the first step is to create an official repository on a server accessible to all of the team members. Typically, this repository will also serve as the public repository of the project maintainer.
  • #58: Next, all of the other developers need to fork this official repository. It’s possible to do this by SSH’ing into the server and running git clone to copy it to another location on the server—yes, forking is basically just a server-side clone.
  • #59: Next each developer needs to clone their own public repository. They can do with the familiar git clone command. And also add the first created repo as the official upstream.
  • #60: Developers do their local changes.
  • #61: Developers publish their changes.
  • #62: After publishing their changes, developers create pull requests and the project maintainer(s) analyse them.
  • #63: With new pull requests accepted, developers needs to pull from the upstream.
  • #64: Also called as Integration-Manager Workflow.
  • #66: Used by Linux Kernel project. Various integration managers are in charge of certain parts of the repository; they’re called lieutenants. All the lieutenants have one integration manager known as the benevolent dictator. The benevolent dictator’s repository serves as the reference repository from which all the collaborators need to pull.
  • #79: Binary search. Logarithmic complexity.