GitLab: apa itu dan cara bekerja dengannya lewat Git (clone, push, merge request, CI/CD)
GitLab adalah platform web untuk menyimpan repositori Git dan bekerja sama dalam tim: kode, merge request, tugas, dan CI/CD bawaan ada di satu tempat. GitLab bisa dipakai di layanan cloud gitlab.com atau di server perusahaan sendiri, dan kode dikirim serta diambil dengan perintah Git biasa, yaitu clone, push, dan pull.
GitLab itu apa
GitLab adalah platform tempat repositori Git disimpan dan kerja tim dijalankan: peninjauan kode, merge request (permintaan penggabungan), tugas, wiki, registri container, dan CI/CD bawaan. Singkatnya, GitLab adalah "GitHub dengan pipeline build sendiri dan pilihan untuk dipasang di server Anda". Banyak perusahaan, termasuk di Indonesia, menyimpan kode di GitLab yang berjalan di jaringan internal mereka.
Proyek ini dimulai pada 2011 sebagai aplikasi open source untuk hosting kode, lalu di sekitarnya berkembang perusahaan GitLab Inc. Platform ini tersedia dalam dua versi: Community Edition, versi terbuka yang bisa dipasang gratis di server sendiri, dan Enterprise Edition dengan fitur berbayar. Di gitlab.com, paketnya bernama Free, Premium, dan Ultimate.
Jangan tertukar antara dua hal ini. Git adalah sistem kontrol versi, sebuah program di komputer Anda. GitLab adalah layanan yang menyimpan salinan jarak jauh dari repositori dan menambahkan antarmuka serta alat untuk tim. Tanpa Git, Anda tidak bisa bekerja dengan GitLab, tetapi Git tetap berjalan tanpa GitLab.
Git dan GitLab: apa bedanya
Pertanyaan "git dan gitlab apa itu" biasanya muncul ketika kedua kata itu tercantum di lowongan kerja atau disebut di hari pertama bekerja. Bedanya seperti antara dokumen dan layanan penyimpanan cloud: Git melacak perubahan file, riwayat commit, dan branch secara lokal. GitLab menerima riwayat itu lewat jaringan dan menampilkannya di browser.
| Git | GitLab | |
|---|---|---|
| Apa itu | Program kontrol versi | Platform web untuk repositori dan kerja tim |
| Berjalan di mana | Di komputer developer | Di gitlab.com atau di server perusahaan |
| Perlu internet? | Tidak, kecuali untuk push, pull, fetch, clone | Ya, ini layanan jaringan |
| Fungsi utama | Commit, branch, merge, riwayat | Merge request, review, tugas, CI/CD, hak akses |
| Cara memakainya | Command line, IDE, klien GUI | Browser ditambah perintah Git biasa |
Semua aktivitas terhadap kode, seperti commit, branch, dan merge, tetap Anda lakukan di Git. GitLab hanya menerima hasilnya lewat git push dan memungkinkan Anda mendiskusikannya dengan rekan tim.
GitLab dan GitHub: apa bedanya
Keduanya menyimpan repositori Git dan mendukung review kode, sehingga keterampilan dasar bisa dipakai di keduanya tanpa perubahan. Perbedaannya ada pada fokus dan model pemasangannya.
| Kriteria | GitLab | GitHub |
|---|---|---|
| Permintaan penggabungan | Merge request (MR) | Pull request (PR) |
| CI/CD | GitLab CI/CD bawaan, file .gitlab-ci.yml | GitHub Actions, file di .github/workflows/ |
| Pemasangan sendiri | Community Edition gratis di server sendiri | GitHub Enterprise Server, berbayar |
| Kode sumber platform | Terbuka (Community Edition) | Tertutup |
| Pengelompokan proyek | Grup dan subgrup bertingkat | Organisasi |
| Lebih populer di | Pengembangan korporat, server internal | Open source, proyek publik, portofolio |
Dalam praktik, banyak developer memakai keduanya: proyek pribadi dan portofolio di GitHub, kode kerja di GitLab milik perusahaan. Perintah Git tetap sama, yang berubah hanya alamat repositori remote.
gitlab.com atau server sendiri (self-hosted)
gitlab.com cocok untuk proyek pribadi dan tim kecil: Anda mendaftar lalu langsung membuat repositori. Pembaruan, cadangan, dan ketersediaan menjadi tanggung jawab GitLab. Batasan paket gratis (jumlah anggota, menit CI, kapasitas penyimpanan) kadang berubah, jadi cek halaman harga untuk kondisi terkini.
GitLab yang dipasang sendiri dijalankan perusahaan di server mereka, dari paket untuk Linux, Docker, atau Kubernetes. Kode tidak keluar dari jaringan internal, login perusahaan bisa dihubungkan lewat LDAP, dan runner untuk build bisa disiapkan sendiri. Imbalannya, administrator bertanggung jawab atas pembaruan dan cadangan. Bagi developer, perbedaannya hampir tidak terasa: alamatnya bukan gitlab.com, melainkan misalnya gitlab.perusahaan.co.id.
Mengatur Git untuk bekerja dengan GitLab
Sebelum commit pertama, atur nama dan e-mail. Keduanya akan tercatat di riwayat, dan GitLab mengaitkan commit dengan profil Anda lewat e-mail:
git config --global user.name "Budi Santoso"
git config --global user.email "budi@example.com"
Di Windows, gunakan Git Bash yang ikut terpasang bersama Git untuk Windows. Di dalamnya ada ssh-keygen, sehingga semua perintah di artikel ini berjalan tanpa perubahan. Selanjutnya, pilih cara login: HTTPS dengan token atau kunci SSH.
Login lewat HTTPS: personal access token
Kata sandi akun tidak sebaiknya dipakai untuk operasi Git lewat HTTPS, dan jika autentikasi dua faktor aktif, kata sandi itu memang tidak akan berfungsi. Sebagai gantinya, buat personal access token di pengaturan profil GitLab (bagian Access tokens). Untuk pekerjaan kode, cukup izin read_repository dan write_repository. Tentukan masa berlaku dan simpan tokennya segera, karena tidak akan ditampilkan lagi.
Saat push atau clone pertama kali, Git akan menanyakan login dan kata sandi: masukkan nama pengguna GitLab, dan untuk kata sandi, masukkan token. Pengelola kredensial (sudah terpasang di Git untuk Windows) akan mengingatnya, sehingga Anda tidak perlu mengetik ulang.
Login lewat kunci SSH
SSH lebih nyaman untuk pekerjaan harian: cukup tambahkan kunci sekali, lalu tidak perlu mengetik apa pun lagi.
ssh-keygen -t ed25519 -C "budi@example.com"
cat ~/.ssh/id_ed25519.pub
Salin isi file .pub (kunci publik) ke bagian SSH Keys di pengaturan profil GitLab. Untuk memastikan koneksi berhasil:
ssh -T git@gitlab.com
Welcome to GitLab, @budi.santoso!
Git clone GitLab: cara meng-clone repositori
Di halaman proyek ada tombol Code dengan dua alamat, untuk SSH dan HTTPS. Salin yang Anda perlukan, lalu jalankan git clone:
# lewat HTTPS
git clone https://gitlab.com/my-group/my-project.git
# lewat SSH
git clone git@gitlab.com:my-group/my-project.git
Di GitLab, path proyek bisa memuat subgrup, misalnya gitlab.com/perusahaan/backend/api.git. Itu wajar; salin alamatnya secara utuh.
Git clone GitLab dengan token
Dalam skrip dan di server yang tidak ada orang untuk mengetik kata sandi, token diberikan langsung di alamat. Nama penggunanya bisa username Anda atau oauth2:
git clone https://oauth2:TOKEN_ANDA@gitlab.com/my-group/my-project.git
Perhatikan: alamat seperti ini akan tersimpan di .git/config dan bisa masuk ke riwayat perintah shell. Untuk otomatisasi, gunakan deploy token atau project access token dengan izin minimum dan masa berlaku terbatas. Di CI, gunakan variabel bawaan CI_JOB_TOKEN.
Git push ke GitLab: mengirim kode
Jika proyek sudah ada di komputer Anda, buat proyek kosong di GitLab (tanpa README, supaya tidak ada commit tambahan), lalu hubungkan remote:
git remote add origin git@gitlab.com:my-group/my-project.git
git branch -M main
git push -u origin main
Flag -u menghubungkan branch lokal dengan branch remote, sehingga setelah itu cukup menulis git push dan git pull. Alur kerja hariannya sama dengan layanan lain:
git switch -c feature/login
git add .
git commit -m "Tambah form login"
git push -u origin feature/login
git pull
Tag dikirim secara terpisah: git push origin v1.2.0, atau semuanya sekaligus dengan git push --tags. Di GitLab, tag terlihat di bagian Tags dan sering memicu pipeline rilis.
Kesalahan umum git push di GitLab
- HTTP Basic: Access denied — login salah, atau yang dimasukkan kata sandi, bukan token. Buat token dengan izin
write_repositorydan hapus entri lama dari pengelola kredensial. - Permission denied (publickey) — GitLab tidak mengenali kunci SSH Anda. Pastikan kunci publik sudah ditambahkan ke profil, lalu jalankan
ssh -T git@gitlab.com. - You are not allowed to push code to protected branches — branch (biasanya
main) dilindungi. Kirim perubahan ke branch Anda sendiri, lalu buka merge request. - rejected ... (fetch first) — di server ada commit yang belum ada di komputer Anda. Jalankan
git pull --rebase, lalu ulangi push. - remote: Project not found — alamat salah ketik, atau Anda tidak punya akses ke proyek. Tanyakan peran Anda kepada pemilik proyek.
Merge request di GitLab
Merge request adalah padanan pull request di GitHub: permintaan agar branch Anda digabungkan ke branch utama. Di MR, rekan tim menulis komentar pada baris kode, pemeriksaan CI dijalankan, dan keputusan penggabungan diambil. Setelah push branch baru, GitLab mencetak tautan untuk membuat MR di terminal, dan di antarmuka web muncul saran untuk membuatnya.
MR juga bisa dibuat langsung dari command line dengan push options:
git push -o merge_request.create -o merge_request.target=main origin feature/login
Alur tipikalnya: branch untuk tugas, commit, push, MR, review dan pipeline hijau, lalu merge. Saat penggabungan, GitLab bisa menggabungkan commit menjadi satu (squash) dan menghapus branch sumber. Jika ada konflik di MR, cara paling mudah adalah memperbarui branch secara lokal dengan git pull --rebase origin main atau git merge main, menyelesaikan konflik, lalu push lagi.
Tandai pekerjaan yang belum selesai sebagai Draft: MR seperti itu tidak bisa digabung tanpa sengaja, tetapi rekan tim tetap bisa melihat dan mendiskusikan perubahannya.
CI/CD di GitLab: .gitlab-ci.yml
Keunggulan utama GitLab adalah CI/CD bawaan. Cukup letakkan file .gitlab-ci.yml di root repositori, dan setiap push akan menjalankan pipeline yang terdiri dari tahap (stages) dan tugas (jobs). Tugas dijalankan oleh runner: di gitlab.com tersedia runner bersama, sedangkan di server sendiri runner dipasang terpisah.
stages:
- test
- deploy
test:
stage: test
image: python:3.12
script:
- pip install -r requirements.txt
- pytest
deploy:
stage: deploy
script:
- ./deploy.sh
rules:
- if: $CI_COMMIT_TAG
Dalam contoh ini, test dijalankan pada setiap push, sedangkan tugas deploy hanya berjalan saat tag dikirim: git tag v1.0.0 lalu git push origin v1.0.0. Hasil pipeline terlihat langsung di merge request, dan Anda bisa melarang penggabungan selama pemeriksaan belum lulus.
Cara menghapus repositori di GitLab
Perintah Git tidak bisa menghapus proyek di server. git push hanya mengubah branch dan tag. Proyek dihapus lewat antarmuka web: buka pengaturan proyek, bagian General, blok Advanced, lalu tombol hapus dengan konfirmasi nama proyek. Peran yang diperlukan adalah Owner. Salinan lokal tetap ada, karena itu hanya folder dengan .git.
Jika ingin memutus hubungan repositori lokal dari GitLab tanpa menghapus apa pun di server, cukup jalankan git remote remove origin.
Kapan memilih GitLab
- Kode tidak boleh disimpan di cloud pihak luar, jadi diperlukan server sendiri.
- Butuh CI/CD yang langsung tersedia tanpa layanan pihak ketiga.
- Organisasi besar dengan hierarki tim: grup bersarang dan peran yang fleksibel sangat berguna.
- Anda masuk ke perusahaan yang sudah memakai GitLab: pilihan sudah ditentukan, tetapi keterampilan Git Anda berpindah sepenuhnya.
Untuk portofolio dan open source, GitHub lebih sering dipilih karena komunitasnya lebih besar dan proyek lebih mudah ditemukan. Tidak ada yang melarang menyimpan proyek di kedua layanan sekaligus, karena satu repositori bisa memiliki beberapa remote.
Kesimpulan
GitLab adalah platform untuk repositori Git dengan review lewat merge request, tugas, dan CI/CD bawaan, tersedia di cloud maupun di server sendiri. Bekerja dengannya berarti memakai perintah yang sudah dikenal: atur login dengan token atau kunci SSH, lalu clone, commit, push, dan merge request. Remote repositori dan alur kerja tim dibahas secara praktis dalam kursus Git.
Pertanyaan umum
Apakah GitLab gratis?
Community Edition gratis untuk dipasang di server sendiri, dan gitlab.com memiliki paket Free dengan batasan. Fitur lanjutan tersedia di paket berbayar Premium dan Ultimate.
Bisakah memindahkan proyek dari GitHub ke GitLab?
Bisa. GitLab menyediakan impor proyek dari GitHub. Riwayatnya juga bisa dipindahkan manual dengan <code>git clone --mirror</code> dari alamat lama lalu <code>git push --mirror</code> ke alamat baru.
Apakah perlu mempelajari perintah khusus untuk GitLab?
Tidak. Kode dikerjakan dengan perintah Git biasa, dan GitLab menambahkan antarmuka web. Untuk otomatisasi tersedia juga utilitas command line glab dan API.
Apa bedanya GitLab Flow dan Git Flow?
GitLab Flow lebih sederhana: pekerjaan dilakukan di branch fitur dengan merge request ke main, dan untuk lingkungan atau rilis ditambahkan branch khusus bila perlu, tanpa branch develop dan hotfix seperti di Git Flow.
Topik ini dibahas mendalam dengan praktik di kursus “Git dari Nol hingga Pengembang Percaya Diri”.
- GitHub dan Repositori Jarak Jauh: Kode Anda di Awan
- Proses Git di Tim Nyata: Alur Kerja Mana yang Dipilih