Product Solutions Resources Partners Pricing Support Talk to an expert Get free trial Login Source Code Management Source code management enables coordination, sharing, and collaboration across an entire software development team. GitLab supports teams to rapidly collaborate and iterate on new features and deliver business value. Try GitLab free Source code management is where development teams start sharing and collaboration begins Version control in GitLab helps your development team collaborate and maximize productivity, sparking faster delivery and increased visibility. With its Git-based repository, GitLab enables clear code reviews, asset version control, feedback loops, and powerful branching patterns to help your developers solve problems and ship value. Source code management is a critical part of the DevOps lifecycle, enabling teams to manage their work with a single source of truth. Collaborate Review, comment, and improve code. Enable re-use and innersourcing. File locking prevents conflicts. Robust WebIDE accelerates development on any platform. Accelerate Git-based repository enables developers to work from a local copy. Branch code, make changes, and merge into the main branch. Built-in Continuous Integration (CI) and Continuous Delivery (CD) streamlines testing and delivery. Compliant and Secure Review, track, and approve code changes with powerful merge requests. Automatically scan for code quality and security with every commit. Simplify auditing and compliance with granular access controls and reporting. Want to know where we're headed? Learn about the future of source code management Featured videos Support Numerous Assets in GitLab Enterprise Ready Authentication Enterprise Ready Project Templates Try GitLab for free Get unlimited access to all of GitLab's features for 30 days. Get free trial Features Ease of migration from other providers SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE GitLab lets you easily migrate all repos, issues and merge request data from your previous provider. Documentation Jira Integration SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE To ensure that developers in GitLab and project managers in Jira remain in tune, GitLab integrates with Jira and provides the necessary tooling to fill that gap. Learn how integrate Jira with GitLab Jira Development Panel Integration SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE View GitLab repository information and navigate to GitLab from the Jira development panel. Documentation Powerful branching SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE A branch in Git contains the entire history that precedes it. It’s also created or moved towards instantly and easily shared. Documentation Protected branches SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Granular permissions for branches you want to protect. Documentation Commit graph and reporting tools SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE GitLab provides commit graphs and reporting tools about collaborators’ work. Documentation Required Merge Request Approvals SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Guarantee quality and standards of your code by mandating a set number of necessary approvals and predefine a list of specific approvers. Documentation Multiple approvers in code review SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE To ensure strict code review, you can require a minimum number of users to approve of a merge request before it is able to be merged. Documentation Approval rules for code review SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Approval rules ensure that the right people review merge requests by specifying eligible approvers and the minimum number of approvals required for a merge request. Documentation Repository pull mirroring SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Mirror a repository from a remote Git server to your local server, making it easy to keep local forks and replicas up to date. Documentation Create new branches from issues SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE In GitLab, you can quickly create a new branch from an issue on the issue tracker. It will include the issue number and title automatically, making it easy to track which branch belongs to which issue. Documentation Allow edits from upstream maintainers in a fork SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE When a user opens a merge request from a fork, they are given the option to allow upstream maintainers to collaborate with them on the source branch. This allows the maintainers of the upstream project to make small fixes or rebase branches before merging, reducing the back and forth of accepting community contributions. Documentation Search files with fuzzy file finder SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE GitLab provides a way to search a file in your repository in one keystroke. Documentation Push rules SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Reject new code and commits that don’t comply with company policy. Documentation Block secret file push SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Block important or secret files from being accidentally pushed to a live repository with push rules. Documentation Fast-forward merge with option to rebase SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE With this setting at the project level, you can ensure that no merge commits are created and all merges are fast-forwarded. When a fast-forward merge is not possible, the user is given the option to rebase. Documentation Squash and merge SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Combine commits into one so that main branch has a simpler to follow and revert history. Documentation Remote repository push mirroring SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Mirror a repository from your local server to elsewhere. Push mirroring is supported via HTTP and SSH using password authentication, and using public-key authentication with SSH. Documentation Reject unsigned commits SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE GitLab Premium allows you to enforce GPG signatures by rejecting unsigned commits. Documentation Verified Committer SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Verify that a push only contains commits by the same user performing the push. Documentation Xcode integration SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Open Xcode projects in Xcode directly from GitLab. Starting in Xcode 10, you can also sign in to GitLab in Xcode and access projects directly from the Xcode interface. Documentation Cherry-picking changes SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Cherry-pick any commit in the UI by simply clicking the Cherry-Pick button in a merged merge request or a specific commit. Documentation GPG Signed Commits SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Sign commits and prove that a commit was performed by a certain user. Documentation X.509 Signed Commits and Tags SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Sign commits and prove that a commit was performed by a certain user. Documentation Restrict push and merge access SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Extend the base functionality of protected branches and choose which users can push or merge to a protected branch. Documentation Protected tags SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Granular permissions for tags you want to protect. Documentation Server Hooks SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Leverage the power of Server Hooks and chain them together to fire off custom scripts when certain actions occur on the repository. If the commit is declined or an error occurs during the Git hook check, the error message of the hook will be present in GitLab’s UI. GitLab supports all types of hooks. Documentation Git LFS 2.0 support SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Manage large files such as audio, video and graphics files with the help of Git LFS. Git LFS 2.0 file locking support helps large teams work with binary assets and is integrated with our native file locking feature. Documentation Keep personal email private SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Use a noreply email address for your commits instead of your personal email address private. Documentation Download single repository files SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE When browsing through project repositories on GitLab, having direct access to single files is a relevant use case. A ‘Download’ button in the file viewer allows you to download individual files from the GitLab UI. Documentation Instance file templates SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Define custom LICENSE, .gitignore, Dockerfile and .gitlab-ci.yml templates for your GitLab instance to make consistency easier. Documentation Group file templates SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Define custom LICENSE, .gitignore, Dockerfile and .gitlab-ci.yml templates for a Group to make consistency easier. Documentation AsciiDoc SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE AsciiDoc is a text document format for writing notes, documentation, articles, books, ebooks, slideshows, web pages, man pages and blogs. Preview AsciiDoc files directly in the repository browser. Documentation S/MIME Signed Commits SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Sign commits and prove that a commit was performed by a certain user. Documentation Optional Merge Request Approvals SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Code review is an essential practice of every successful project, and giving your approval once a merge request is in good shape is an important part of the review process, as it clearly communicates the ability to merge the change. Documentation Code Owners SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Assign Code Owners to files to indicate the team members responsible for code in your project. Code owners are assigned automatically as merge request approvers. Documentation Restrict SSH Keys SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Control the technology and key length of SSH keys used to access GitLab Documentation Activity Stream SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE View a list of the latest commits, merges, comments, and team members on your project. Documentation Built-in and custom project templates SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE When creating a new project, you can choose to kickstart your project from a predefined template that already has some working example code and CI preconfigured. In addition, you can define a custom project templates by assigning a group. Child projects of this group are available as templates when creating a new project. Documentation Initialize README on project creation SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE A repository can be initialized with an example README when creating a new project. If this option is checked, a project repository is initialized with a default master branch which can be cloned right away. Documentation Repository languages on project overview SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE A code languages bar on the project overview shows all relevant languages the GitLab repository consists of, including relative quantity. Documentation Git protocol v2 support SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Git’s wire protocol defines how clones, fetches and pushes are communicated between the client and server. Git protocol v2 improves performance of fetch commands and enables future protocol improvements. Documentation Missing The best place for large open source projects SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE GitLab is meant to be the best place for any software project. The team behind GitLab is addressing issues that maintainers and contributors to large open source projects are facing, to make it easier to do both. Making GitLab better for large open source projects Create GitLab Branch from Jira Development Panel SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Create a GitLab branch from within the development panel of a Jira issue. Issue details Contributor agreements SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Users can be required to sign one or more contributor agreements before being able to submit a change in a project. Issue details Works with multiple repository types SaaS FREE PREMIUM ULTIMATE Self-Managed FREE PREMIUM ULTIMATE Supports more than one repository type, such as Git, Subversion, Perforce, CVS, Mercurial. Documentation Twitter Facebook YouTube LinkedIn Why GitLab? Product Solutions Services DevOps tools Is it any good? Releases Pricing Get started Resources All resources All-Remote Blog Newsletter Events Webcasts Topics Training Docs Developer Portal Install Community Customers Contribute Community Programs Direction Technology Partners Channel Partners Open Source Partners GitLab for Open Source GitLab for Education GitLab for Startups Shop Community Forum Support Get help Contact Sales Contact Support Support options Status Customers Portal Company About What is GitLab? Jobs Culture Leadership Team Press Investor Relations Analysts Handbook Security Contact Terms Privacy Cookie Preferences Trademark Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license View page source — Edit in Web IDE — please contribute. © 2021 GitLab B.V. This website uses cookies We use cookies to make our websites and services operate correctly, to understand how visitors engage with us and to improve our product and marketing efforts. See our cookie policy for more information.Cookie Policy Cookies Settings Accept All Cookies