GitLab Merge Requests vs. GitHub Pull Requests

GitLab compared to other tools

GitLab is the next-generation development toolset that covers 100% of your software development lifecycle.

GitLab unifies chat, issues, code review, CI, CD, and cycle analytics into a single UI. Unlike other source code management tools that only support a portion of your development lifecycle, GitLab delivers a unified experience for every step of the development lifecycle providing the most efficient approach to software delivery. So no matter what line of business you're in, GitLab gives you the edge to compete, innovate, and win.

FEATURES

Squash and merge

Combine commits into one so that main branch has a simpler to follow and revert history.

Learn more about squash and merge

Labels

Labels provide an easy way to categorize issues or merge requests based on descriptive titles as 'bug', or 'documentation'.

Learn more about GitLab Labels

Improved UX

GitLab Merge Requests have their own description and title displayed before the timeline feed.

View side-by-side comparison

Edit merge request

GitLab Merge Requests are editable by the author, the project's owners and users with master access. Every field is editable, as well as the target branch.

Read through GitLab Merge Request's Documentation

Built-in Continuous Integration

Use GitLab CI/CD (built-in GitLab) to build, test, and deploy your app with continuous methods, and your build results will be displayed on merge requests.

Take a peek at GitLab's Pipeline Graphs.

Fast-Forward merge available for all merge requests

With fast-forward merges, you keep a linear Git history without creating merge commits. With GitLab, they're configurable on a per-project basis; with GitHub, they are available only for squashed or rebased merge commits.

Learn more about Fast-Forward Merge Requests

Fix merge conflicts from the UI

When a merge request has conflicts, it is possible to resolve those conflicts right from the GitLab UI.

Learn more about Merge Conflict Resolution

Close issue(s) when merged

With GitLab, you can use specific keywords to close one or more issues as soon as a merge request is merged.

Learn more about automatically closing issues

Review Apps

With GitLab Review Apps, you can preview the changes made to your app by that merge request in dynamic environments. These environments are automaticaly destroyed when the merge request gets merged.

Learn how to get started with Review Apps

Integrated web terminal

GitLab can open a terminal session directly from your environment if your review app is deployed on Kubernetes. This is a very powerful feature where you can quickly debug issues without leaving the comfort of your web browser.

Learn more about GitLab Web Terminals

Watch your jobs running

With GitLab's built-in CI/CD, you can watch your jobs running right from the UI for debugging and optimizing your CI scripts.

Approvals

Merge Request Approvals make your workflow smoother when your are working with your team. With GitLab, approvals are configured per project, and a user can choose the approver in a per-merge request basis.

Read through Merge Request Approvals Documentation.

Resolvable discussions

Code or text review is faster and more effective with inline comments in merge requests. In GitLab, Merge Request inline comments are interpreted as a discussion. You can configure your project to only accept merge requests when all discussions are resolved.

Learn more about Resolvable Discussions

Todos

When a user is mentioned in or assigned to a merge request it will be included in the user Todos, making the development workflow faster and easier to track.

Learn more about GitLab Todos

Time tracking

Time Tracking allows you to track estimates and time spent on issues and merge requests within GitLab.

Learn more about GitLab Time Tracking.

Integrated with Cycle Analytics

Cycle Analytics lets you know how long it takes your team to complete each stage in their workflow from idea to production.

Learn more about GitLab Cycle Analytics

Enriched markdown support

Both Merge Request descriptions and comments support GFM - GitLab Flavored Markdown.

Learn more about GitLab Flavored Markdown

Pipeline Views

GitLab Merge Requests are presented with multiple views: Discussion, Commits, Pipelines, Changes (diffs). On GitHub, even if a repository integrates with a Continuous Integration third-party tool, you can't see its pipelines through GitHub's UI.

Cherry Pick merge request

Cherry-pick any commit in the UI by simply clicking the Cherry-Pick button in a merged merge request or a commit.

Learn more about Cherry Picking merge requests

Merge when pipeline succeeds

When reviewing a merge request that looks ready to merge but still has one or more CI jobs running, you can set it to be merged automatically when the jobs pipeline succeeds.

Learn more about Merge when pipeline succeeds

Revert commits from the UI

Revert any commit from GitLab's UI, with a click of a button.

Learn how to revert a commit or a merge request from the GitLab UI.

Work in Progress Merge Request (WIP)

Prevent merge requests from accidentally being accepted before they're completely ready by marking them as Work In Progress (WIP).

Learn more about WIP MRs

Merge Request template

By adding a description template to your MRs, users who create a new issue or merge request can select a template to help them to communicate effectively.

Learn more about GitLab Description Templates