GIT Branching (I): Explained Like I'm Five
Tags: github, git, beginners, webdev
Published: 2020-10-19 13:31:38

Branching is a feature available in most modern version control systems. In Git, branches are a part of your everyday development process. When you want to add a new feature or fix a bug—no matter how big or how small—you create a new branch to hold your changes. This would give you an opportunity to compare to see if there is any conflict or issue that may arise suppose you merge. You can think of branching as a way to request a brand new working directory, staging area, and project history.

In clearer terms, when you make changes to your repository, it's best practice to push to a separate branch so you can compare changes before creating a pull request and finally merging a pull request. This is most important when collaborating with other people.

By default, your repository has one branch named `main` which is considered to be the definitive branch. We use branches to experiment and make edits before committing them to `main`. At the end of this section, I will show you how to change the default branch of your repository on GitHub so all your changes get merged there. Most people love making use of `master` as their default branch.

****

#### Pull request
Pull Requests are the heart of collaboration on GitHub. When you open a _pull request_, you’re proposing your changes and requesting that someone review and pull in your contribution and merge them into their branch. Pull requests shows differences, in the content from both branches. The changes, additions, and subtractions are shown in green and red.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/5ujb1ta2j2545556dv21.png)

You can either create a branch on GitHub or via git command, I will be explaining both. To create via GitHub, Visit your repository.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/pc2mu93uckmwmpy2hfqv.png)

or using the git command. From now on I will only be making use of the git commands so you can know the git commands associated with branching.

- **git branch**
This command is used to know all branches available on a particular repository and also an asterisk(*) will be placed above the branch in which that repository is.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/n6ri1mductvo8c9ovuwt.png)

- **git checkout -b**
This command is used to create a new branch and automatically change your current branch to the new one.
```
$ git checkout -b name
```
The name can be anything... You can also use the `git branch` command to see the changes.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/rf8i8z0jqt1eydjxzin4.png)

- **git checkout**
This command is used to switch from one branch to another
```
$ git checkout branchName
```
With a perfect understanding of what I just explained, you can now work with Github branching, push your codes to a new branch, create a pull request, check for conflicts, resolve conflicts if any, and finally merge your code together then delete the branch if you wish.

****

Here are the steps involved if you want to push to a new branch:
1. Create a new branch and move to that branch using `git checkout -b branchName`
2. Check if you are on the new branch using `git branch`
3. Stage your files using `git add .`
4. Commit new changes using `git commit -m "message"`
5. Push to this branch on GitHub using `git push origin branchName`
6. Finally, go to Github & create a pull request

When you visit GitHub and refresh you will see something like this indicating changes on a new branch 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/01i52ew1h1v1d1b2vfno.png)

All you have to do is click the "*compare & pull request*" button. It will display a section that allows you to create a pull request

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2jlqpzh0v0t672rgnuvc.png)

In the above image, the area marked with a red box clearly shows you that I am pulling a request for my codes on `new-branch` to be merged to previous codes on `master` branch. You can type in a comment so people understand why you are creating a PR, then finally click the button.

Once you have created a pull request. the owner of the repository, will get notified and now be able to review changes made and merge your codes, but if you own the repository or have access you can easily merge yourself.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/uzwd2wmzqcp4qkilqk4d.png)

*Once it's merged the label changes from green to purple and you can now delete the branch if you wish to.*

****

Finally, to wrap up this section, I will be showing you how to change your default branch on Github. 
**Step 1:** Click on `branches` to see all branches available

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/5dq7iv0kh4csrwh3y5w4.png)

**Step 2:** Click on `change default branch` 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/xahgs1x19bdgbsr1n0x5.png)

**Step 3:** Select the branch you want to change to and then click the update button.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/n1u2z8fcga0oojfo0k2o.png)

*With that, I believe you mush have gotten an idea of what branching is all about, how to create a pull request, and how to merge your codes.*

****

## In Conclusion
I have tried my best to explain a few areas of GitHub and even make use of pictorial examples to explain better. Thanks for reading!


****

As always, any questions or suggestions, please feel free to leave a response or [tweet me](https://twitter.com/olawanle_joel) 🤭! Be sure to connect with me on socials! 😎