Why I Use GitLab over GitHub

the GitLab homepage on an iMac sitting on a white desk in a white room

Talking about the tools a web developer uses to create projects can sometimes lead to a bit of a flame war.

We all like our tools and think that they are the best.

Which makes the following statement a bit of a risk: I don’t use GitHub for version control anymore. And instead I’ve been using GitLab for a few years now and I don’t see me ever going back.

I had been using GitHub since I started web development (as well as taking the Elements of Computing certificate courses at UT Austin). But over time I’ve been using GitLab more and more, starting as a repository for my website’s code (since it was easier to set up a pipeline to my site) and now to all of my projects.

So let’s dive into why I’ve decided to move from GitHub to GitLab full time now.

Started Using it When it Had Private Repositories

Really, I first started using GitLab because they offered private repositories at a time when GitHub didn’t really allow that.

At the time I was building out the Sports Bench plugin and theme, my first foray into the world of premium WordPress products, and, to be honest, I didn’t want all of the code to be in an accessible place where anyone could get it.

And since GitHub didn’t offer that, I looked for alternatives and found GitLab, and I haven’t really looked back. I had a great first impression of their services, and even now that GitHub has private repositories, it’s not even close enough of something to get me to switch back now.

Easier for me to Organize Projects

Also, another thing that I really love about GitLab over GitHub is how much better it is to organize all of my different projects.

I’m still not entirely sure how it happened, but I was able to create an organization for my account there a couple of years ago, which has really helped me organize the different projects.

I’m able to create different groups for different sections of projects. For example, I have a group for the Crosswinds Framework, another for Small Business Website Starter Kit projects, another for custom website design projects, another for regular freelance projects and so on.

screenshot of the organization structure of projects

This helps me keep different projects in different buckets, and makes it easier for me to find the project I need quickly.

I’ll be honest that I haven’t really looked at GitHub again to see if that’s something that’s possible, but at this point I’ve got things so set up the way I like it with my organizational structure that there’s no real point in going back.

Could Connect Pipelines to WP Engine

Another reason I decided to switch is because it had an easier to use pipeline system where I could push code from the repository to my website on WP Engine.

Admittedly, this is probably something that I could have figured out in GitHub, and maybe it’s easier to do nowadays. But at the time I found a great article that walked through each of the steps so that any commit to the main branch could be pushed to the live website without me having to do any manual work. And it could be something that I could replicate on client sites as well.

It was a wonderful quality of life enhancement for sure.

Issue Boards are Amazing

I think my favorite part of GitLab, however, is the issue boards that I can create in each project.

Now, I know that GitHub has something similar, but I’ve found it a bit trickier to set up inside of GitHub. I’m not a fan that in addition to labels and milestones that I have to also create a project and manually add tasks to that project.

GitLab, on the other hand, has its issue board reside inside of the Issues section of the project. Plus, when creating an issue board, I can set it up to automatically add in issues with a specific milestone or label. And I can set it up so that each column in a step in the process (i.e. to do, doing, awaiting merge, merged, hold/blocked) and that dragging an issue between columns will change those labels automatically.

In the end, GitLab gives me the best way to take a look at what’s going on with a project and what needs to be completed before the next milestone is accomplished.

screenshot of an issue board in GitLab for a project

Needed Everything in One Place

Finally, I really just wanted everything I built to be in one place.

I started creating my free WordPress plugins and themes on GitHub, but with the switch to developing websites and premium products on GitLab, it made sense to really just move everything under one roof.

Now I’m not having to jump between services for different projects. Instead, they’re all organized in one single place.

That being said, I’m still in the process of moving the free products over to GitLab (and making them public and viewable by anyone). But once it’s done, it’ll be great to have a nice organizational structure with just one service.

I Do Wish I Could Use GitHub Actions Though

Now having said all of that, I do wish that replicating something like GitHub actions inside of GitLab was a lot easier.

Something I’ve wanted to do with the Crosswinds Framework products is to set up a pipeline that would run the WordPress CodeSniffer each time code is pushed to the repository so that I could better make sure that it lines up with the WordPress Coding Standards.

While doing this in GitHub would cost an amount of money, there are enough tutorials that make it seem easy enough to get started.

At the time of writing, I still haven’t found something like that that works in GitLab, which is frustrating. But maybe I just need to keep doing research to figure it out (or if you’ve managed to do it, could you please leave it down in the comments? I will love you forever for that!).

Still, it’s not enough to make me want to switch back over to GitHub.

What do you use?

But I’m also curious as to what other developers use for their version control. I’m not naive to think that my current setup is the best for everyone, and learning what others are using might help me and others in the future.

So do you use GitLab or GitHub? Or do you use something different like BitBucket, OneDev or something else?

Be sure to leave your version control setup in the comments below!

Leave a Reply

Your email address will not be published. Required fields are marked *