DEV Community

Alec DuBois
Alec DuBois

Posted on • Updated on

Git Branches in Five Minutes

Let's talk about branches. We've touched on these very briefly in previous posts in this series, but let's look at them on their own. (And do it in five minutes!)

Hi: notes for absolute beginners may show up like this.

Jump To:

Overview

In Git, branches are used to isolate changes from the rest of the code base.

This way, you can keep the spaghetti code you're using to build a new feature or fix a bug to yourself until you're ready to merge it with the main code.

The master branch is typically considered the working branch, which means that any changes you make there may effect anyone - or anything - using the code. Not where you want to play around with a new feature!

Here we go:

Making a Branch

For the rest of this I'm going to assume you're using GitHub, but there are lots of other Git hosting services out there. Remember, Git and GitHub are two different things.

First, you need to create your repository and navigate there in your terminal.

You can see which branch you're currently in by doing:

git status

You should see something like:

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

If you don't, go back and make sure that your repository is pointed at the correct remote

Now, make a new branch by doing:

git checkout -b new-feature

Remember flags? -b is saying "make a new branch!

You should now see:

Switched to a new branch 'new-feature'

You've now created a new branch!

Now, make some changes. I'm just going to create a file called README.md.

You can create a new file with touch README.md in your terminal.

Now, do:
git add . and git commit -m "Adds README"
This adds everything in the current directory . and commits the changes. More here.

You should see:

[new-feature (root-commit) e18e06c] Adds README
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md

Notice that the commit message went under the branch new-feature in the first line of that message.

Now, push to the remote branch:

git push origin new-feature

You'll see something like:

Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 216 bytes | 216.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:afteralec/git-blog.git
 * [new branch]      new-feature -> new-feature

Done! Pretty easy, right?

Pull requests

In a real project, you'd continue committing and pushing to your branch until your code was ready to see the light of day. (Or, at least, be merged with the main code of the project in the master branch!)

Typically, this is done using a pull request.

GitHub has a great walk-through on it here, but again, use whichever platform you've been using until now.

With GitHub, it's pretty easy:

  1. Open the pull request from the repository's page. Click the pull requests tab at the top and then new pull request.

  2. Follow the prompts and complete the form

  3. Open the pull request!

In this example, as the repository owner, you'll be able to merge your own pull request - this isn't always the case!

For our purposes, go ahead and merge your changes.

Cleanup

From here, you have two options:

  1. Delete your branch.
  2. Merge the new master code into your branch.

For this, go ahead and delete the branch. Our new feature (the README file) has been added, and there's nothing else to do with it for now!

Back in your terminal (in the local repository) do:

git checkout master

Without the -b flag, this moves you around from branch to branch

and then:

git pull

This part's important - remember, you made changes in the new-feature branch, not the master branch, so this brings you back up-to-speed with the current master code.

You can also delete your branch locally!

To see your branches, do:

git branch

Flags again! You can add -r to see only the remote branches, and add -a- to see all branches.

Do:

git branch -D new-feature

You should see something like:

Deleted branch new-feature (was e18e06c).

This has been Git Branches in (Less Than?) Five Minutes.

If this helped you, you have something to add, or you or want to tell me why you think birds aren't real, leave a comment below.

Discussion (0)