This is part 24, starting with the initial installation of Git and moving on to collaboration, local servers, CI/CD, and GitOps operations. Instead of memorizing commands, I organized them in order of checking when to use them and what changes. Simply select the installation version of your operating system among Windows 11, Rocky Linux 9, or Ubuntu 24.04 and then join the common practice.
If your purpose is personal change management, you can use parts 1 to 13, and if you need an in-house Git server, you can use parts 14 to 16. Starting with Part 17, we connect test automation, and from Part 20 onwards, we cover deployment status and recovery for readers who know Kubernetes.
Environment to prepare first
In the beginning, you only need one PC to install Git. Common Bash examples run from a Linux terminal or Windows Git Bash. Commands specific to PowerShell are marked separately. Replace the example address and name with your own values, but do not put your actual password or private key in the storage.
Local servers require a Linux VM separate from existing services, CI requires a GitHub or Jenkins execution environment, and GitOps requires a decommissionable Kubernetes cluster. Configurations that sequentially run installation commands to a production server are not the lab environment for this series.
Step 1 · Concept and installation by operating system
- 01 · When is Git used as a tool: Relationship between repository, commit, and GitOps
- 02 · Installing Git on Windows 11: PowerShell and Git Bash
- 03 · Install Git on Rocky Linux 9 and set up a work account
- 04 · Install Git on Ubuntu 24.04 and prepare the repository
Step 2 · Change history and branches
- 05 · Creating the first repository: Order of writing add·commit·status·diff
- 06 · How to read history: commit graph·HEAD·diff·bisect
- 07 · Command to select before reverting: restore·reset·revert
- 08 · Creating and merging branches: switch·merge and fast-forward
- 09 · Conflict resolution: common ancestor and 3-way merge
Step 3 · Remote collaboration and release
- 10 · Connecting remote storage: clone·fetch·pull·push
- 11 · Team branch strategy and Pull Request: selection of merge·rebase
- 12 · Tags and releases: Making deployed commits findable
- 13 · Storage cleanup: gitignore·line break·LFS·secret value
Step 4 · Restore with local Git server
- 14 · Creating a local Git server: Rocky·Ubuntu’s bare repository and SSH
- 15 · Building a local Git web server with Gitea: Docker Compose
- 16 · Gitea backup and restore: Data lost when just copying the repository
Step 5 CI/CD connection
- 17 · Connecting CI with GitHub Actions: Flow that stops at test failure
- 18 · Connecting Gitea and Jenkins: Repository authentication·Jenkinsfile·Trigger
- 19 · CD following CI: approval/output promotion/image digest
Step 6 GitOps and Operations
- 20 · Four principles of GitOps and dividing app/deployment settings repositories
- 21 · Argo CD first distribution: Installation·AppProject·Repository authentication
- 22 · Change detection and recovery: Automatic Sync·selfHeal·prune·Git revert
- 23 Secret value management: Base64 and SOPS age encryption of Secret
- 24 · Completing Git·CI/CD·GitOps operation flow: judgment and recovery by failure
Download the example file and continue practicing
Git·GitOps Example ZIP Download contains Python code and tests, GitHub Actions, Jenkinsfile, Gitea Compose and backup scripts, Argo CD definitions, deployment YAML, and local encryption examples. It does not include your actual password and private key. The location of each file and preparation conditions are described in README.txt in the ZIP.
The Python app is an example to learn Git and CI, and the Kubernetes deployment is an official nginx image to check state coordination. Do not interpret the two examples as if the image build and deployment of the actual app were already connected. Connection points when expanding to actual services are discussed in Parts 19 and 24.
Confirmed scope and application criteria
The official documentation and release confirmation date is October 18, 2026. We distinguished between items with execution results and items for document/static review. The patch version and service screen of the package may vary at the time of installation.
| target | Actual confirmation range |
|---|---|
| Rocky Linux 9 · Git 2.52.0 | Package installation in container, restore·conflict·merge·revert·tag·bare remote·push rejection·rebase·bundle |
| Ubuntu 24.04 · Git 2.43.0 | Same Git scenario and Python normal/error input test, stopping packaging in case of failure |
| Gitea 28.1.0 · PostgreSQL 17 | Web installation in separated Compose, authenticated HTTP clone·push, DB·volume backup, and file consistency check after restoration of new project |
| SOPS 3.13.3 · age 1.3.2 | Verification of official distribution files and encryption/decryption of example values round trip |
| Windows 11 | Review of official installation/command documents. Windows GUI launch no confirmation |
| GitHub Actions · Jenkins | Review settings and commands, check local test/ZIP creation. No actual hosted pipeline execution |
| Kubernetes · Argo CD 3.5.5 | Check official installation file/image digest, check YAML syntax/source/target consistency. No actual cluster deployment |
Restoration tests including Gitea’s LFS, external object storage, attached files, and SSH transmission must be confirmed in a separate environment. The replica and resource values in the example are starting values for learning purposes only and are not performance measurement results. Proceed by comparing the failure symptoms and confirmation points for each piece in your own environment.
Good article to read together
Jenkins’ first Pipeline complements the process of connecting controllers, agents, and repositories. At the end of each article, I’ve linked the official sources for the commands and settings. Representative photos are reference materials to describe the work environment and do not serve as photographic evidence of practice equipment or execution results.