0% found this document useful (0 votes)
21 views9 pages

Git & Gitlab - Cheatsheet

Uploaded by

Projects Fun
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views9 pages

Git & Gitlab - Cheatsheet

Uploaded by

Projects Fun
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

# [ Git & Gitlab ] ( CheatSheet )

Git Commands

● Initialize a Repository: git init


● Clone a Repository: git clone [URL]
● Add File(s) to Staging: git add [file]
● Commit Changes: git commit -m "[commit message]"
● Push Changes: git push [remote] [branch]
● Pull Changes: git pull [remote]
● Create a Branch: git branch [branch_name]
● Switch Branches: git checkout [branch_name]
● Merge Branch: git merge [branch_name]
● Fetch Remote Repository: git fetch [remote]
● View Status: git status
● View Commit History: git log
● Stash Changes: git stash
● Apply Stashed Changes: git stash apply
● Reset to Commit/HEAD: git reset --hard [commit]
● Rebase Branch: git rebase [branch_name]
● Delete Branch: git branch -d [branch_name]
● View Remote Repositories: git remote -v
● Tag a Commit: git tag [tag_name] [commit]
● Show Changes/Differences: git diff

GitLab-Specific Commands

● Create a New Project: gitlab project create [name]


● List Projects: gitlab project list
● Create a Merge Request: gitlab merge-request create
● List Merge Requests: gitlab merge-request list
● Create an Issue: gitlab issue create
● List Issues: gitlab issue list
● Upload a File to Repository: gitlab project-file upload
● Download a File from Repository: gitlab project-file download

By: Waleed Mousa


GitLab CI/CD

.gitlab-ci.yml Configuration Basics

stages:
- build
- test
- deploy

● Define Stages:Define a Job:

build_job:
stage: build
script:
- echo "Building the project."

● Setting up Test Job:

test_job:
stage: test
script:
- echo "Running tests."

● Setting up Deploy Job:

deploy_job:
stage: deploy
script:
- echo "Deploying application."

● Defining Artifacts:

artifacts:
paths:
- build/

By: Waleed Mousa


● Only/Except Policies:

only:
- master

● Cache Dependencies:

cache:
paths:
- .maven/

● Using Docker Images:

image: maven:latest

● Defining Variables:

variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml"

● Using Services (e.g., Databases):

services:
- postgres:latest

● Manual Job Trigger:

deploy_prod:
stage: deploy
script:
- echo "Deploying to production."
when: manual

● Scheduled Pipelines:
○ Configured through the GitLab UI under CI/CD > Schedules.

By: Waleed Mousa


GitLab Runner

● Install GitLab Runner: Follow official installation guide


● Register a Runner: gitlab-runner register
● Start GitLab Runner: gitlab-runner start
● Stop GitLab Runner: gitlab-runner stop
● Unregister a Runner: gitlab-runner unregister --url [CI_SERVER_URL]
--token [REGISTRATION_TOKEN]

Advanced CI/CD

● Multi-Project Pipelines:
○ Use trigger in .gitlab-ci.yml to trigger pipelines in other
projects.
● Environment and Deployment:

deploy_to_prod:
stage: deploy
environment:
name: production
script:
- echo "Deploying to production."

Review Apps:

● Set up dynamic environments for merge requests.


● Include External CI/CD Configuration:

include:
- project: 'other/project'
ref: master
file: '/path/to/template.yml'

● Using Anchors for Template Reuse:

.template: &template
script:
- echo "This is a script template."

By: Waleed Mousa


use_template:
<<: *template

Advanced Git Operations

● Cherry-pick a Commit: git cherry-pick [commit_hash]


● Revert a Commit: git revert [commit_hash]
● Interactive Rebase: git rebase -i [base_commit]
● Squash Commits: git rebase -i [base_commit] (then use 'squash')
● Amend a Commit: git commit --amend
● Stash Specific Files: git stash push [file_name]
● Clean Untracked Files: git clean -f
● Reflog to Recover Lost Commits: git reflog
● Check Out a Remote Branch: git checkout -b [branch_name]
[remote_name]/[branch_name]
● List Tags: git tag

Advanced GitLab Features

● Set Up Protected Branches: GitLab UI > Repository > Protected


Branches
● Configure Project Access: GitLab UI > Project > Settings > General
● Add Group and Project Members: GitLab UI > Project/Group > Members
● Set Up Webhooks for Integration: GitLab UI > Project > Settings >
Webhooks
● Set Up Issue Boards for Agile Management: GitLab UI > Project >
Issue Board
● Create and Manage Labels: GitLab UI > Project > Labels
● Configure Repository Mirroring: GitLab UI > Repository > Settings >
Repository Mirroring
● Use GitLab Snippets for Code Sharing: GitLab UI > Project >
Snippets
● Configuring Project Wikis for Documentation: GitLab UI > Project >
Wiki
● Using GitLab's Container Registry: docker push
registry.gitlab.com/[username]/[project]

By: Waleed Mousa


GitLab CI/CD Advanced Usage

● Using Multi-Stage Pipelines:


○ Define multiple stages in .gitlab-ci.yml and specify the stage
for each job.
● Deploy to Multiple Environments:

deploy_staging:
stage: deploy
script: echo "Deploying to staging"
environment: staging

● Use of Artifacts and Dependencies:

build:
stage: build
script: make build
artifacts:
paths:
- build/

test:
stage: test
script: make test
dependencies:
- build

● Docker-in-Docker for Building Containers:

image: docker:19.03.12
services:
- docker:19.03.12-dind

● Multi-Project Pipeline Triggers:

trigger:
project: my/other-project
branch: master

By: Waleed Mousa


● Using Variables and Secrets:

variables:
DATABASE_URL: "postgres://..."

● Scheduled Pipeline Execution:


● Configure in GitLab UI under CI/CD > Schedules.
● Optimizing with Caching:

cache:
paths:
- .maven/

● Setting Up Review Apps:


○ Use dynamic environments to preview changes.
● Using Auto DevOps in GitLab:
○ Enable Auto DevOps in project settings.

Advanced CI/CD Techniques

● Parent-Child Pipelines for Modular CI/CD:

build:
stage: build
trigger:
include: 'path/to/child-pipeline.yml'

● Using GitLab's CI Lint Tool:


○ Validate .gitlab-ci.yml using the CI Lint tool in GitLab UI.
● Coverage Reports and Code Quality:
○ Integrate testing and code quality tools and report coverage
in the pipeline.
● Accessibility Testing within Pipelines:
○ Integrate accessibility testing tools like pa11y or axe-core.

By: Waleed Mousa


GitLab Runner Advanced Configurations

● Register Multiple Runners:


○ Register different runners for specific jobs or tags.
● Configure Runner Executors:
○ Choose between shell, docker, virtualbox, etc., when
registering runners.
● Using Tags to Control Job Execution:

job1:
tags:
- linux
- docker

● Runner Caching to Speed Up Builds:


○ Configure cache in runner's config.toml.
● Configuring Parallel Job Execution in Runner:
○ Set concurrent in the runner's config.toml.

Git Tips for Efficient Workflow

● Alias Common Commands: git config --global alias.co checkout


● Interactive Staging: git add -i
● Patch Mode for Partial Commits: git add -p
● Git Bisect to Find Bugs: git bisect start; git bisect bad; git
bisect good [good_commit]
● Search in Git Logs: git log --grep="pattern"

GitLab Tips for Better Project Management

● Quick Actions in Issues/MRs: Use /close, /label, /assign in


comments.
● Preview Merge Conflict Resolution:
○ Use the conflict resolution UI in GitLab merge requests.
● Use GitLab's Built-in CI/CD Templates:
○ Utilize existing .gitlab-ci.yml templates for common
languages and frameworks.
● Set Up GitLab Pages for Project Documentation:

By: Waleed Mousa


○ Host static websites directly from a GitLab repository.
● Monitor Pipeline Performance:
○ Use the Pipelines page to monitor build times and optimize
them.

GitLab CI/CD Security Practices

● Scan for Vulnerabilities: * Integrate SAST (Static Application


Security Testing) and DAST (Dynamic Application Security Testing)
in pipelines.
● Dependency Scanning: * Add dependency scanning jobs to the CI/CD
pipeline.
● Container Scanning for Docker Images: * Scan Docker images for
vulnerabilities as part of the CI/CD pipeline.

By: Waleed Mousa

You might also like