GITHUB Flow: An infographic
by Yashlin Naidoo
Published on: 2/12/2024
GitHub Flow is a lightweight, branch-based workflow that supports teams and projects where deployments are made regularly. This workflow is easy to understand and implement, making it ideal for collaborative software development projects.
Process
- Create a branch: Whenever you start work on a new feature or bug, you create a new branch off the main branch (usually called main or master). This branch should have a descriptive name to give others an idea of what you’re working on.
- Add commits: Once your branch has been created, start making changes to your project. You can add these changes to your branch by using commits. Each commit should be a self-contained unit of work, and the commit message should clearly describe what the commit does.
- Open a Pull Request (PR): Once you have commits in your branch and you feel it’s ready for feedback or merging, you open a pull request. A PR initiates a discussion about your commits. Colleagues can review your work, providing comments and suggestions. It’s also a good place for continuous integration (CI) reports to show whether the proposed changes pass all the tests.
- Discuss and review your code: Once a PR has been opened, your team will review your changes and may suggest improvements or modifications. This step is crucial for maintaining code quality and ensuring consistency across the project.
- Deploy: you can deploy your branch to a staging or production environment to test it in real-world scenarios. This step ensures that your changes work as expected outside of a local development environment.
- Merge: After your changes have been reviewed, passed any tests, and proven to work in the deployment environment, your code is ready to be merged into the main branch. Once merged, it’s a good practice to delete the branch since its changes have been incorporated into the mainline, keeping the repository clean and tidy.
- * Feature flagging: enhances GitHub Flow by providing the ability to enable or disable features of an application at runtime without changing the code, this creates a powerful mechanism for safer deployments, gradual feature rollouts, quick rollbacks, and efficient experimentation.