Update :
- 15/12/2020 : Menambahkan emoji, memperbaiki narasi kata & istilah, menambahkan link sumber informasi
Pada kesempatan kali ini, penulis akan membagikan informasi berkaitan dengan Git, GitLab dan Git Flow yang di bagi menjadi 3 artikel dalam Git Series 🌊. Informasi ini telah di gunakan pada acara DSC Jogja 2020 dengan judul Let's Connect With Git
Outline Pembahasan
Mengenal Git : Sebagai Version Kontrol
Mengenal Git : 3 status dalam menyimpan file
Mengenal Git : Install & Menjalankan Git
Mengenal Git : Command Line
Mengenal Git : Ignore file
Ringkasan
Sumber
Mengenal Git : Sebagai Version Control System
Git adalah sistem versi kontrol terdistribusi gratis dan open source yang dirancang untuk menangani mulai dari proyek kecil hingga sangat besar dengan kecepatan dan efisiensi.
Apa itu versi kontrol dan kenapa versi kontrol penting dalam software development ?
Sebagai contoh, Budi bekerja sebagai backend developer dalam sebuah tim dan ia ditugaskan membuat fitur Login menggunakan username dan password oleh PM. Fitur awal sudah jadi dan digabungkan menjadi satu ke production, lalu ada pengembangan tambahan dengan menambahkan fitur oauth login dengan google, lalu fitur tersebut sudah jadi dan di gabungkan menjadi satu ke production. Namun dengan alasan tertentu, fitur login dengan google ingin di non-aktifkan untuk sementara.
Di sini kita bisa lihat peran versi kontrol, dari pada budi menghapus kode yang telah dibuat, budi bisa memilih kembali ke versi fitur yang sebelumnya dalam contoh di atas adalah kembali ke fitur Login menggunakan username dan password. Dan ketika fitur login dengan google ingin digunakan lagi, budi bisa memilih ke versi tersebut kembali.
Jadi versi kontrol adalah sistem yang merekam perubahan pada file, ataupun sekumpulan file dari waktu ke waktu sehingga developer dapat melihat dan memilih versi tertentu ketika dibutuhkan, Dengan begitu sebenarnya yang dilakukan oleh Version Control System dalam hal ini Git adalah hanya menambahkan data.
Mengenal Git : 3 status dalam menyimpan file
Lalu bagaimana Git menyimpan file ? Berikut ini adalah hal utama yang harus kita ingat, Git memiliki tiga status saat file kamu disimpan, yaitu modified, staged, commited
modified : yang berarti kamu telah mengubah file tetapi belum memasukkannya ke database.
staged : yang berarti kamu telah menandai file yang dimodifikasi dalam versi saat ini untuk masuk ke snapshot commit kamu berikutnya.
commited : yang berarti data disimpan dengan aman di database lokal kamu.
dari 3 status tadi, membawa kita ke tiga bagian utama dari proyek Git, working directory, staging area, .git directory
Working directory : adalah checkout tunggal dari satu versi proyek. File-file ini ditarik dari database yang dikompresi di direktori Git dan ditempatkan pada disk untuk kamu gunakan atau modifikasi.
Staging Area : adalah sebuah file, biasanya terdapat dalam direktori Git, yang menyimpan informasi tentang apa yang akan dimasukkan ke dalam commit kamu selanjutnya.
.git Direktori : adalah tempat Git menyimpan metadata dan database objek untuk proyek kamu. Ini adalah bagian terpenting dari Git, dan inilah yang disalin saat kamu menduplikasi repositori dari remote server.
jadi alur kerjanya nya adalah :
- kamu memodifikasi proyek didalam working directory
- kamu secara selektif menetapkan perubahan yang kamu inginkan menjadi bagian dari commit berikutnya, yang hanya menambahkan perubahan tersebut ke staging area.
- kamu melakukan commit, yang mengambil file sebagaimana mereka berada di staging area dan menyimpan snapshot itu secara permanen ke .git direktori.
Mengenal Git : Install & Menjalankan Git
Ada banyak cara berbeda untuk menggunakan Git. Dapat menggunakan command line dan juga antarmuka pengguna grafis. Namun pada kesempatan kali ini, kita akan mencoba dasar git menggunakan command line.
Persyaratan :
Membuka Command Shell dan menginstall Git sesuai Sistem Operasi
Setelah melakukan instal Git sesuai dengan sistem operasi, selanjutnya buka command shell/Terminal.
Membuka Command Shell/Teriminal :
- MacOS : Tekan ⌘ command + space dan ketik “terminal” untuk mencarinya
- Windows : Klik icon pencarian pada navbar bawah dan ketik “cmd” atau "Git Bash" untuk mencarinya
- Linux : Tekan "Super" dan pada kotak pencarian dan ketik “terminal”
Untuk yang belum terpasang dapat mengikuti tautan berikut ini, lalu jika ingin memastikan apakah sudah terpasang atau belum dapat membuka command shell/Terminal, lalu ketikan perintah berikut ini 👇
$ git --version
Jika ada kembaliannya adalah seperti ini 👇
$ git version X.Y.Z
maka git sudah terpasang di komputer kalian dan siap ke panduan berikut nya 👏 👏
Mengenal Git : Command Line
- Konfigurasi Git : Sebelum dapat melakukan commit, push pada Git, hendaknya kita melakukan konfigurasi terlebih dahulu identitas kita pada Git, sehingga nanti rekat tim dapat mengetahui perubahan yang kita lakukan.
$ git config --global user.name “Your Name”
☝️ konfigurasi ini berfugsi untuk mengatur nama yang akan dilampirkan ke commit dan tag
$ git config --global user.email “you@example.com”
☝️ konfigurasi ini berfugsi untuk mengatur email yang akan dilampirkan ke commit dan tag
$ git config --global --list
☝️ Menampilkan informasi konfigurasi saat ini
- Memulai Projek : Perintah awal ketika ingin bekerja menggunakan Git. Baik membuat ataupun menyalin dari remote repository
$ git init [project name]
☝️ Buat repositori lokal baru. Jika [nama proyek] disertakan, Git akan membuat nama direktori baru [nama proyek] dan akan menginisialisasi repositori di dalamnya. Jika [nama proyek] tidak tersedia, maka repositori baru di inisialisasi di direktori saat ini.
$ git clone [project url]
☝️ Menyalin proyek dengan seluruh riwayat dari remote repository.
- Perintah sehari-hari :
$ git status
☝️ Menampilkan status direktori kerja kamu. Opsi mencakup file baru, stage, dan modified. Ini akan mengambil nama branch, pengenal commit saat ini, dan perubahan menunggu commit
$ git add [file]
☝️ Tambahkan file ke staging area. Gunakan [.] untuk menambahkan semua file yang diubah dari direktori saat ini ke working tree.
$ git diff [file]
☝️ Tampilkan perubahan pada file antara working directory dan staging area.
$ git diff --staged [file]
☝️ Menunjukkan setiap perubahan file antara staging area dan repositori.
$ git checkout -- [file]
☝️ Buang perubahan dalam working directory. Operasi ini tidak dapat dipulihkan.
$ git reset [file]
☝️ Kembalikan repositori kamu ke status kerja sebelumnya yang diketahui.
$ git commit -m [messages]
☝️ Buat commit baru dari perubahan yang ditambahkan ke staging area. commit harus memiliki pesan untuk mengetahui perubahan apa yang dilakukan.
$ git rm [file]
☝️ Hapus file dari working directory dan staging area.
$ git stash
☝️ Simpan perubahan saat ini di working directory kamu ke dalam stash untuk digunakan nanti.
$ git stash pop
☝️ Kembalikan/keluarkan perubahan yang disimpan didalam stash ke dalam working directory, dan hapus stash.
$ git stash drop
☝️ Hapus stash tertentu dari semua stashes kamu sebelumnya.
- Git Branching Model :
$ git branch [-a]
☝️ Tampilkan semua branch lokal di repositori. Dengan [-a] akan menampilkan semua branch (dengan branch pada remote repository).
$ git branch [branch_name]
☝️ Buat branch baru, dengan mereferensikan HEAD saat ini
$ git checkout [-b][branch-name]
☝️ Pindah working directory ke branch yang ditentukan. Dengan [-b] Git akan membuat branch [branch-name] jika tidak ada.
$ git merge [branch-name]
☝️ Gabungkan dengan branch tertentu [branch-name] ke branch kamu saat ini.
$ git branch -d [branch-name]
☝️ Hapus branch [branch-name], jika sudah di merge dengan yang lain. Gunakan [-D] ketimbang [-d] untuk penghapusan secara paksa.
- Tinjau Pekerjaan :
$ git log [-n count]
☝️ Daftar riwayat commit dari branch saat ini. [-n] menghitung batas daftar untuk melakukan [n] terakhir.
$ git log --oneline --graph --decorate
☝️ Melihat rangkuman log dengan label referensi dan history grafik. Satu commit per baris.
$ git log ref..
☝️ Buat daftar commit yang ada di branch saat ini dan tidak digabung menjadi ref, ref bisa nama branch atau nama tag.
$ git log ..ref
☝️ Buat daftar commit yang ada di ref dan tidak di merge ke branch saat ini.
$ git reflog
☝️ Daftar operasi (mis. checkouts atau commit) yang dilakukan di repositori lokal
- Memberi Tag pada commit :
$ git tag
☝️ Tampilkan semua tag
$ git tag [name] [commit sha]
☝️ Buat referensi tag bernama [name] untuk commit saat ini. Tambahkan [commit sha] untuk menandai commit tertentu, bukan yang saat ini.
$ git tag -a [name] [commit sha]
☝️ Buat objek tag bernama [name] untuk commit saat ini.
$ git tag -d [name]
☝️ Hapus tag [name] dari repositori lokal.
- Mengembalikan Perubahan :
$ git reset [--hard] [target reference]
☝️ Mengalihkan branch saat ini ke [target references], meninggalkan perbedaan sebagai perubahan yang tidak mengikat. Saat [--hard] digunakan, semua perubahan akan dibuang.
$ git revert [commit sha]
☝️ Buat commit baru, kembalikan perubahan dari commit yang ditentukan. Ini menghasilkan pembalikan posisi pada perubahan.
- Menyinkronkan Repository :
$ git fetch [remote]
☝️ Ambil perubahan dari remote repository, tetapi tidak merge perubahannya ke working directory saat ini
$ git fetch --prune [remote]
☝️ Hapus referensi remote yang telah dihapus dari remote repository.
$ git pull [remote]
☝️ Ambil perubahan dari remote repository dan merge branch saat ini dengan upstreamnya.
$ git push [--tags] [remote]
☝️ kirimkan perubahan pada lokal repository ke remote repository. Gunakan [--tags] untuk mengirimkan tag.
$ git push -u [remote] [branch]
☝️ kirimkan branch lokal ke remote repository. Setel salinannya sebagai upstream
Mengenal Git : Ignore file
File ini berguna untuk mengabaikan folder maupun file tertentu yang dapat kita atur. Sebagai contoh umumnya file yang di abaikan adalah seperti cache, packages ataupun kredential yang akan ikut terkirim ke remote repository. Sebagai contoh, isi dari file gitignore adalah sebagai berikut :
$ cat .gitignore
__pycache__
node_modules/
.env
/logs/*
!logs/.gitkeep
/tmp
*.swp
Dan juga sudah disediakan template dari .gitignore sesuai dengan bahasa ataupun framework yang akan kamu gunakan dalam pengembangan, sehingga kamu tidak perlu memikirkan apa saja yang harus di abaikan.
Ringkasan
Sehingga secara gambaran umum bagaimana kita bekerja didalam Git dengan perintah command line adalah sebagai berikut ini
Dan berikut inilah ilustrasi dalam bentuk grafis yang menjelaskan perintah sehari-hari di atas.
Sumber Informasi
Instal Git
Penjelasan & Status dalam direktori git
Download GitBash (Windows)
Git Cheat Sheat
Discussion