By Organization Type
By Use Case
Meet Our Partners
Discover all-in-one software delivery.
See repositories in action with GitLab projects.
Install one package, run a complete solution.
See why we're the best in DevOps
Adopt one platform for endless possibilities.
Get a DevOps platform that grows with you.
Trusted by government. Loved by developers.
Automate everything, accelerate deployment.
Build the future with a shared history.
Adopt DevOps with a single commit.
Integrate security, deliver faster continuously.
Keep your methodology, gain functionality.
Visualize what works and optimize the rest.
Simplify IT with DevOps-style automation.
Develop secure software faster in a single platform.
Explore our quick-start checklist.
Get cross-functional software delivery insights.
Access step-by-step tutorials and guides.
Watch videos and self-driven demos.
Read up on releases, contributions, and more.
Adopt DevOps faster with our support services.
Learn why top companies trust GitLab for DevOps.
Download knowledge, expand to production.
Discover how we work better together – wherever.
Access contributor resources and startup grants.
Find meetups, webinars, conferences, and more.
See DevSecOps through the eyes of practitioners
Check out our technology and channel partners.
See our cloud partners and other integrators.
Join our DevOps partner ecosystem.
Find resellers, solution providers, and more.
Grow your business alongside our DevOps experts.
Find out how, where, and when we offer support.
Explore support documents and instructions.
You know what git is. 😄
git rev-parse --abbrev-ref HEAD
git diff-tree --no-commit-id --name-only -r HEAD
git diff --name-only
git diff --name-only master
commit=$0 git rev-list $commit..HEAD --ancestry-path | grep -E $(git rev-list $commit..HEAD --first-parent | paste -s -d \"|\" -) | tail -1
git push -o ci.skip