Definisi dan Konteks
Git adalah sistem kontrol versi terdistribusi yang diciptakan oleh Linus Torvalds pada tahun 2005 untuk pengembangan kernel Linux. Sebagai VCS (Version Control System), Git melacak perubahan pada file kode sumber dari waktu ke waktu, memungkinkan banyak developer untuk bekerja secara paralel pada proyek yang sama tanpa saling menimpa pekerjaan satu sama lain. Setiap salinan repositori Git bersifat lengkap — berisi seluruh riwayat commit, branch, dan metadata — sehingga developer dapat bekerja offline dan menyinkronkan perubahan nanti. Git telah menjadi standar de facto untuk kontrol versi di seluruh dunia, didukung oleh platform hosting seperti GitHub, GitLab, dan Bitbucket.
Azure DevOps, di sisi lain, adalah rangkaian layanan kolaborasi pengembangan perangkat lunak berbasis cloud dari Microsoft yang diluncurkan pertama kali pada tahun 2018 sebagai evolusi dari Visual Studio Team Services (VSTS). Azure DevOps bukan sekadar kontrol versi — ia adalah platform DevOps menyeluruh yang mencakup perencanaan proyek (Azure Boards), repositori kode (Azure Repos yang menggunakan Git di bawahnya), pipeline CI/CD (Azure Pipelines), manajemen artefak (Azure Artifacts), dan pengujian terencana (Azure Test Plans). Dengan kata lain, Azure DevOps mengadopsi Git sebagai mesin kontrol versinya, lalu membungkusnya dalam ekosistem tooling yang jauh lebih luas.
Memahami perbedaan keduanya penting karena kesalahan umum yang sering terjadi adalah membandingkan Git dan Azure DevOps seolah-olah keduanya berada pada kategori yang sama. Padahal, Git adalah tool spesifik untuk kontrol versi, sementara Azure DevOps adalah platform end-to-end yang di dalamnya sudah mengemas Git plus serangkaian layanan lain. Pemahaman ini menentukan apakah tim Anda cukup membutuhkan solusi kontrol versi yang ringan dan fleksibel, atau memerlukan orchestration penuh dari perencanaan hingga deployment.
Head-to-Head Berdasarkan Fitur:
| Aspek | Git | Azure DevOps |
|---|---|---|
| Kontrol Versi | ✅ Inti fungsi | ✅ via Azure Repos (Git-based) |
| Perencanaan/Agile | ❌ Tidak ada (butuh integrasi pihak ketiga) | ✅ Azure Boards (backlog, sprint, dashboards) |
| CI/CD Pipeline | ❌ Tidak ada (butuh GitHub Actions, Jenkins, dll.) | ✅ Azure Pipelines (YAML/classic, multi-agent) |
| Manajemen Artefak | ❌ Tidak ada | ✅ Azure Artifacts (NuGet, npm, Maven, Python) |
| Testing Terencana | ❌ Tidak ada | ✅ Azure Test Plans (manual & exploratory) |
| Self-hosted | ✅ Server lokal gratis | ✅ Azure DevOps Server (on-prem, berbayar) |
| Open Source | ✅ Sepenuhnya open source | ❌ Proprietary (tapi Repos-nya kompatibel Git) |
| Ekosistem & Integrasi | Luas via CLI, hooks, dan marketplace GitHub/GitLab | Kuat di ekosistem Microsoft (VS, Azure, Teams, AD) |
Head-to-Head Berdasarkan Harga:
Git itu sendiri sepenuhnya gratis dan open source. Namun jika kita mempertimbangkan platform hosting, GitHub menawarkan tier gratis untuk repositori publik dan private (dengan batasan menit CI/CD), lalu GitHub Pro seharga $4/bulan per user, dan GitHub Enterprise mulai $21/bulan per user. GitLab menyediakan tier gratis yang sangat generous (termasuk 400 menit CI/bulan), lalu Premium seharga $29/bulan per user, dan Ultimate seharga $99/bulan per user.
Azure DevOps mengikuti model harga yang berbeda. Azure DevOps Services (cloud) memberikan tier gratis yang mencakup lima user, repositori private tak terbatas, 1.800 menit CI/CD per bulan dengan satu parallel job, dan 2 GB artefak. Untuk tim yang lebih besar, Basic Plan seharga $6/bulan per user (atau $8/bulan jika termasuk Test Plans). Parallel jobs tambahan untuk CI/CD dikenakan biaya $40/bulan per parallel job. Azure DevOps Server (on-premises) memerlukan lisensi yang terpisah, meskipun Express edition-nya gratis untuk hingga lima user. Dibandingkan GitHub Enterprise, Azure DevOps seringkali lebih ekonomis untuk organisasi besar yang sudah terikat ekosistem Microsoft, terutama karena bundling layanan yang komprehensif dalam satu harga.
Mekanisme di Baliknya
Konsep Inti Git:
Git bekerja berdasarkan model snapshot, bukan delta. Setiap kali Anda membuat commit, Git mengambil snapshot lengkap dari seluruh file yang berubah dan menyimpan referensi ke snapshot tersebut sebagai objek commit. File yang tidak berubah tidak disimpan ulang — Git hanya menyimpan referensi ke versi sebelumnya. Tiga area utama dalam Git adalah working directory (di mana Anda mengedit file), staging area atau index (di mana Anda menandai perubahan yang akan di-commit), dan repository (di mana Git menyimpan seluruh metadata dan objek secara permanen). Branch di Git hanyalah pointer ringan berbentuk 40-karakter SHA-1 hash yang menunjuk ke commit tertentu, sehingga membuat branching dan merging sangat cepat dan murah secara komputasi.
Konsep Inti Azure DevOps:
Azure DevOps beroperasi pada konsep organisasi dan project. Organization adalah container tertinggi yang mengelola kebijakan keamanan, billing, dan koneksi ke Azure Active Directory. Di dalam organization, project merepresentasikan satu unit kerja yang bisa berisi satu atau lebih repositori di Azure Repos, satu atau lebih board di Azure Boards, definisi pipeline di Azure Pipelines, feed artefak di Azure Artifacts, dan rencana pengujian di Azure Test Plans. Azure Repos di bawah hood-nya adalah Git — ia menyimpan objek Git yang sama, menggunakan protokol yang sama, dan kompatibel penuh dengan Git CLI. Namun Azure DevOps menambahkan lapisan abstraksi untuk kebijakan branch (policy untuk enforce PR review, build validation, dan work item linking), permission yang terintegrasi dengan Active Directory, serta branch folderization untuk mengorganisir branch dalam hierarki visual.
Komponen Utama:
Pada sisi Git, komponen utama terdiri dari .git/objects (blob, tree, commit, dan tag objects), .git/refs (branch pointers, remote-tracking branches, dan tags), .git/HEAD (pointer ke branch aktif), dan remote repositories yang didefinisikan dalam .git/config. Git hook (pre-commit, post-merge, dll.) memungkinkan otomatisasi pada level lokal, sementara .gitignore dan .gitattributes mengontrol file mana yang dilacak dan bagaimana mereka ditangani.
Pada sisi Azure DevOps, komponen utama meliputi Azure Boards yang menyediakan epic, feature, user story, dan task hierarchi dengan hubungan traceability ke commit dan PR; Azure Repos yang menambahkan pull request dengan policy enforcement, code search, dan branch folderization di atas fungsionalitas Git standar; Azure Pipelines yang mendukung build dan release pipeline baik berbasis YAML (sebagai-code) maupun classic UI-defined, dengan agent pool yang bisa Microsoft-hosted atau self-hosted; Azure Artifacts yang berfungsi sebagai registry paket untuk berbagai ekosistem; dan Azure Test Plans yang mendukung manual test case management, exploratory testing, dan automated test integration dengan pipeline.
Skenario Penggunaan
Skenario 1: Inisialisasi Proyek dan Remote Setup
Sebuah tim startup ingin memulai proyek baru. Dengan Git murni, mereka cukup menginisialisasi repositori lokal dan mendorongnya ke remote mana pun (GitHub, GitLab, Bitbucket, atau server sendiri). Fleksibilitas ini menjadi kekuatan Git — tidak ada vendor lock-in.
# Inisialisasi repositori Git lokal
mkdir proyek-baru && cd proyek-baru
git init
# Buat commit pertama
echo "# Proyek Baru" > README.md
git add README.md
git commit -m "feat: inisialisasi proyek"
# Tambahkan remote dan push
git remote add origin https://github.com/tim/proyek-baru.git
git push -u origin mainOutput:
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 251 bytes | 251.00 KiB/s, done.
To https://github.com/tim/proyek-baru.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.Dengan Azure DevOps, langkahnya serupa tetapi remote mengarah ke Azure Repos, dan secara bersamaan tim bisa mengonfigurasi Azure Boards untuk backlog dan sprint:
# Remote mengarah ke Azure DevOps
git remote add origin https://dev.azure.com/org/proyek/_git/proyek-baru
git push -u origin main# Membuat work item via Azure DevOps CLI
az boards work-item create \
--title "Setup infrastruktur awal" \
--type "Task" \
--project "proyek-baru" \
--area "proyek-baru" \
--iteration "proyek-baru\\Sprint 1"Output:
{
"id": 15,
"fields": {
"System.Title": "Setup infrastruktur awal",
"System.State": "To Do",
"System.WorkItemType": "Task"
}
}Skenario 2: Feature Branch dan Pull Request
Developer ingin menambahkan fitur autentikasi. Di kedua sistem, alur branch-nya identik karena Azure Repos menggunakan Git:
# Buat feature branch
git checkout -b feature/auth-oauth2
# Kerjakan perubahan
echo "export function oauth2Login() { ... }" > src/auth/oauth2.ts
git add src/auth/oauth2.ts
git commit -m "feat: tambahkan login via OAuth2
- Implementasi authorization code flow
- Tambahkan token refresh mechanism
Relates: #42"
# Push branch ke remote
git push -u origin feature/auth-oauth2Output:
remote:
remote: Create a pull request for 'feature/auth-oauth2' on Azure DevOps by visiting:
remote: https://dev.azure.com/org/proyek/_git/proyek/pullrequestcreate?sourceRef=feature/auth-oauth2&targetRef=main
remote:
To https://dev.azure.com/org/proyek/_git/proyek
* [new branch] feature/auth-oauth2 -> feature/auth-oauth2Perbedaan signifikan muncul pada pull request. Di GitHub, PR adalah mekanisme review dengan approval dan comment. Di Azure DevOps, PR bisa dilengkapi dengan policy yang mewajibkan minimal dua reviewer, build validation yang menjalankan pipeline tertentu sebelum merge diizinkan, dan koneksi otomatis ke work item di Boards — sehingga traceability dari requirement hingga kode terjaga penuh.
Skenario 3: CI/CD Pipeline
Inilah area di mana Git murni memerlukan integrasi pihak ketiga, sementara Azure DevOps menyediakannya secara native. Dengan GitHub, Anda menulis GitHub Actions:
# .github/workflows/ci.yml (GitHub Actions)
name: CI Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
- run: npm run buildDengan Azure Pipelines, YAML-nya berbeda sintaksis tetapi konsepnya serupa:
# azure-pipelines.yml (Azure DevOps)
trigger:
branches:
include:
- main
paths:
exclude:
- README.md
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '20.x'
displayName: 'Install Node.js'
- script: |
npm ci
npm test
displayName: 'Install & Test'
- script: npm run build
displayName: 'Build'
Perhatikan bagaimana Azure Pipelines menawarkan paths: exclude secara native untuk melewati pipeline jika hanya file dokumentasi yang berubah — fitur yang di GitHub Actions memerlukan konfigurasi paths-filter tambahan. Selain itu, Azure DevOps menyediakan environments dengan approval gates manual: sebelum deployment ke production, reviewer yang ditunjuk harus mengklik approve, dan pipeline bisa dikunci berdasarkan branch atau tag tertentu. Di GitHub, fitur serupa ada melalui Environment protection rules, tetapi integrasinya tidak seketat Azure yang terhubung langsung ke Boards dan artifacts dalam satu ekosistem.
Skenario 4: Manajemen Proyek dan Traceability
Ini adalah pembeda paling fundamental. Git murni tidak memiliki konsep work item, sprint, atau board — Anda membuka Jira, Trello, atau Linear secara terpisah. Azure DevOps menggabungkan semuanya:
- Boards: backlog, sprint planning, Kanban, dengan custom work item types.
- Repos: repository Git dengan branch policy.
- Pipelines: CI/CD yang bisa memvalidasi work item.
- Test Plans: manual dan automated test management.
- Artifacts: package management untuk npm, NuGet, Maven.
Ketika seorang developer membuat commit dengan pesan Fixes #1234, hash #1234 merujuk ke work item di Boards — bukan issue di GitHub. Pada saat merge PR, status work item otomatis berubah ke Closed, dan seluruh histori dari requirement → task → commit → PR → deployment terhubung tanpa integrasi tambahan.
Di GitHub, issue tracker ada, tetapi untuk traceability enterprise-level (audit trail, compliance, custom workflow states, hierarchical work items), organisasi biasanya mengintegrasikan Jira — yang berarti biaya lisensi tambahan dan kompleksitas sinkronisasi.
Kapan Memilih Apa?
Pilih Git (GitHub/GitLab) jika:
- Tim kecil hingga menengah yang memprioritaskan kecepatan setup.
- Proyek open-source atau kolaborasi komunitas.
- CI/CD kebutuhan relatif sederhana tanpa approval gate kompleks.
- Budget terbatas dan ingin memanfaatkan tier gratis.
Pilih Azure DevOps jika:
- Organisasi enterprise yang memerlukan traceability end-to-end.
- Sudah berlangganan ekosistem Microsoft (M365, Active Directory).
- Perlu branch policy ketat, multiple mandatory reviewer, dan build validation.
- Ingin satu platform untuk boards, repos, pipelines, dan test plans tanpa integrasi pihak ketiga.
Jadi, Pilih Mana?
Git adalah fondasi teknis — version control system yang menangani distribusi dan merging kode. Azure DevOps adalah platform di atas Git yang menambahkan lapisan goverance: project management, pipeline orchestration, dan compliance enforcement. Keduanya bukan pesaing langsung; Azure DevOps menggunakan Git di bawah hood-nya. Pertanyaan sebenarnya bukan "Git atau Azure DevOps?", melainkan "Apakah kebutuhan goverance kita cukup kompleks untuk membenarkan platform terintegrasi, atau apakah kesederhanaan Git plus integrasi selektif sudah memadai?" — dan jawabannya bergantung pada skala, regulasi, dan kultur tim Anda.