BGS 27 November 2022

Mempelajari Git

https://git-scm.com/

Tentang Git

VCS atau version control system adalah sebuah sistem yang merekam perubahan-perubahan dari sebuah berkas atau sekumpulan berkas dari waktu ke waktu sehingga kita dapat menilik kembali versi khusus suatu saat nanti. Git merupakan sistem distribusi VCS yang sangat populer, free dan open source.

Perintah dasar Git

  • git init : inisialisasi repositori ke dalam sistem git.
  • git clone : membuat duplikat repositori.
  • git add : menambahkan berkas proyek kedalam tahapan perubahan sistem git.
  • git commit : meyerahkan proyek yang sudah masuk pada tahapan perubahan dengan ditandai ke dalam sistem git.
  • git status : menunjukkan status perubahan pada repositori.
  • git branch : menunjukkan cabang yang sedang dikerjakan pada repoitori lokal.
  • git merge : menggabungkan proyek.
  • git pull : memperbarui repositori lokal terhadap perkembangan repositori server.
  • git push : memperbarui repositori server terhadap repositori lokal yang telah dikembangkan.

Berikut ini pembahasan lebih lanjut agar lebih memahami bagaimana menggunakan Git yang saya rangkum:

Instalasi

Instalasi Git di Linux atau Distro Debian

sudo apt-get install git

Instalasi Git di Windows

Periksa versi Git

# Memeriksa versi Git
git -v

# atau
git --version

# Memperbarui versi Git di Windows
git update-git-for-windows

Konfigurasi

Mengatur atau melakukan setup informasi pengguna pada semua repositori lokal.

# membuat nama sebagai identitas saat meninjau versi histori
git config --global user.name "[namaawal namaakhir]"

# mengatur alamat email yang menghubungkan dengan setiap tanda histori
git config --global user.email "[alamatemail]"

# memeriksa konfigurasi Git
git config --list

# mengatur warna baris perintah otomatis pada Git untuk memudahkan peninjauan
git config --global color.ui auto

Inisisasi

Mengatur inisialisasi atau melakukan init repositori pada direktori.

# inisialisasi direktori yang ada sebagai repositori Git, sehingga membuat file .git sebagai database git
git init

Remote

Penghubung repositori lokal dengan repositori yang dihosting.

# Melihat remote
git remote -v

# Menambah remote
git add remote [namaremote] git@github.com:nama/namarepository.git

# Mengganti nama remote
git remote rename [namasebelumnya] [namasesudahnya]

# Menghapus remote
git remote remove [namaremotedihapus]

# Mengirim revisi ke remote repository
git push [namaremote] [namacabang]

Duplikasi

Membuat duplikasi atau melakukan clone repositori.

# mengambil seluruh repositori dari lokasi yang dihosting melalui URL
git clone [url]

Memeriksa riwayat komit

Memeriksa log atau melakukaninspect komit terhdadap perubahan repositori.

# menampilkan riwayat komit untuk cabang yang sedang aktif
# panjang
git log

# pendek
git log --oneline

# menampilkan komit pada cabang A yang tidak terdapat pada cabang B
git log branchB..branchA

# menampilkan komit yang mengubah file, bahkan diseluruh penggantian nama
git log --follow [file]

Memeriksa perbedaan

Melakukan compare atau membandingkan perbedaan, dan informasi objek.

# menampilkan perbedaan apa yang ada di cabang A yang tidak ada di cabang B
git diff branchB..branchA

# menampilkan objek apapun di Git dalam format yang dapat dibaca manusia
git show [SHA]

Percabangan & Penggabungan

Membuat cabang atau branch, mengisolasi pekerjaan di cabang, mengubah konteks checkout, dan mengintegrasikan perubahan atau menggabungkan cabang merge.

# melihat daftar cabang, tanda * sebagai menunjukan cabang yang aktif
git branch

# membuat sebuah cabang baru pada komit saat ini
git branch [namapercabangan]

# pindah ke cabang lain dan memeriksa ke direktori yang sedang dikerjakan
git checkout [namapercabangan]

# menggabungkan riwayat cabang yang ditentukan kedalam cabang saat ini
git merge [namapercabangan]

Menghapus cabang

Menghapus cabang dari repositori yang sudah tidak dikembangkan lagi, agar repositori bersih dan rapih. Gunakan perintah git branch dengan argumen -d diikuti nama cabangnya.

# Menghapus local branch
git branch -d [namabranch]

# -d atau --delete menghapus biasa
# -D atau --delete-force menghapus paksa

# Menghapus remote branch
git push [namaremote] -d [namabranch]

# Melihat semua branch yang terdapat pada local dan remote
git branch -a

Kondisi file dalam Git

Ada beberapa kondisi file dalam Git, yaitu , Modified, Staged, Commited.

  • Untracked
  • Kondisi file baru, hanya disimpan dalam file seperti biasa.

  • Modified
  • Kondisi file sudah dilakukan perubahan atau revisi, tetapi belum ditandai dan belum disimpan pada Git, hanya disimpan dalam file seperti biasa.

  • Staged
  • Kondisi file sudah dirubah dan ditandai, tetapi belum disimpan pada Git.

  • Commited
  • Kondisi file sudah disimpan pada Git.

# menampilkan perubahan file di direktori kerja, ditampilkan untuk komit berikutnya, kondisi file Untracked atau Modified
git status

# menambahkan file seperti yang terlihat saat ini ke komit berikutnya, kondisinya menjadi Staged
git add [nama_file]

# membatalkan file sambil mempertahankan perubahan dalam direktori kerja
git reset [nama_file]

# perbedaan dari apa yang diubah tapi tidak ditampilkan
git diff

# perbedaan dari apa yang ditampilkan tapi belum komit
git diff --staged

# komit konten yang ditampilkan sebagai snapshot komit baru, kondi file menjadi Commited
git commit -m "[pesan-deskripsi]"

Tracking path changes

Versi penghapusan file dan perubahan jalur.

# menghapus file dari proyek dan pementasan untuk komit
git rm [file]

# merubah jalur file saat ini dan pentaskan pemindahan
git mv [existing-path] [new-path]

# menampilkan semua riwayat komit dengan indikasi setiap jalur yang dipindahkan
git log --stat -M

Ignoring patterns

Mencegah pementasan atau komit file yang tidak disengaja.

# Simpan file dengan pola yang diinginkan sebagai .gitignore dengan pencocokan string langsung atau gumpalan wildcard
git config --global core.excludesfile [file]

Share & Update

Mengambil pembaruan dari repositori lain dan memperbarui repo lokal.

# menambahakn URL Git sebagai alias
git remote add [alias] [url]

# mengambil semua cabang dari jarak jauh Git
git fetch [alias]

# menggabungkan sebuah cabang jarak jauh ke cabang saat ini untuk memperbaruinya
git merge [alias]/[branch]

# mengirimkan komit cabang lokal ke cabang repository jarak jauh
git push [alias] [branch]

# mengambil dan menggabungkan komit dari pelacakan cabang jarak jauh
git pull

Rewrite history

Menulis ulang cabang, memperbarui komit, dan menghapus riwayat.

# menerapkan komit apapun dari cabang saat ini di depan yang ditentukan
git rebase [branch]

# bersihkan area pementasan, pasang kembali pohon kerja dari komit yang ditentukan
git reset --hard [commit]

Kontribusi pada repositori yang ada

# unduh repositori pada server ke repositori lokal
# ganti `owner/repo` dengan pemilik dan nama repositori untuk duplikat
git clone https://github.com/owner/repo.git

# pindah ke direktori `repo`
cd repo

# membuat branch baru untuk menyimpan perubahan
git branch my-branch

# pindah ke branch yang telah dibuat (proyek yang dikerjakan)
git checkout my-branch

# buat perubahan, contohnya merubah `file1.md` dan `file2.md` menggunakan text editor

# menambahkan perubahan-perubahan berkas (stage)
git add file1.md file2.md

# menyerahkan berkas yang telah dirubah
git commit -m "my snapshot"

# mengirimkan perubahan berkas ke repositori server
git push --set-upstream origin my-branch

Membuat repositori baru dan mempublikasinya ke GitHub

Pertama buat dulu sebuah repositori kosong di GitHub. Lalu buat sebuah repositori lokal seperti berikut ini:

# buat sebuah direktori, dan inisialisasi git pada direktori tersebut
git init my-repo

# pindah ke direktori `my-repo`
cd my-repo

# buat berkas proyek
touch README.md

# menambahakan berkas kedalam sistem git (stage)
git add README.md

# menyerahkan berkas yang ditandai ke dalam sistem git
git commit -m "add README to initial commit"

# menyediakan jalur ke repositori server di github
git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPOSITORY-NAME.git

# mengirimkan berkas ke repositori server
git push --set-upstream origin main

Mengambil revisi repositori remote

Agar proyek yang sedang dikerjakan tidak bentrok, setiap kita bekerja dengan repositori yang mungkin terdapat perubahan disana seabaiknya kita mengambil revisi terbaru dari repositori utama terlebih dahulu. Sehingga repositori lokal juga diperbarui seperti repositori remote.

Ada 2 perintah untk mengambil revisi dari reposistori remote:

  1. fetch
  2. pull

fetch

Perintah git fetch digunakan hanya untuk mengambil revisi (commit) saja terhadap repositori lokal.

pull

Perintah git pull digunakan untuk mengambil revisi (commit) dan langsung melakukan penggabungan (merge) terhdadap repositori lokal.

Jadi sebaiknya kita menggunakan perintah git fetch jika kita sudah melakukan perubahan pada repositori lokal, sehingga perubahannya tidak hilang.

Memeriksa riwayat dengan perintah git log atau agar ringkas git log --oneline, kita perhatikan perbedaan commit dari repositori lokal dengan repositori remote.

Untuk memeriksa lebih jelasnya kita periksa dengan perintah git diff.

git diff main origin/main
  • main adalah cabang (branch) main di repositori lokal.
  • origin/main adalah cabang main di repositori remote.

Dari perbedaan tersebut kita bisa melakukan perubahan terlebih dahulu sebelum menggabungkan repositori remote dengan lokal.

Lalu kita gabungkan commit dari repositori remote dengan dengan repositori lokal dengan perintah git merge.

git merge main origin/main

Setalah itu beri perintah ls untuk melihat isi reposistori dan git log untuk melihat riwayat perubahan.

Bekerja dengan repositori fork

Sinkronisasi repositori fork

# melakukan fetch dari repositori fork
git fetch upstream

# melakukan merge dari repositori fork ke repositori lokal
git merge upstream

# melakukan pull dari repositori lokal ke repositori remote
git pull

# sampai disini repositori remote sudah sinkron dengan repositori fork

Referensi:

Tidak ada komentar:

Posting Komentar

Terima kasih telah berkunjung dan membaca artikel ini. Silahkan berikan saran dan pertanyaan di kolom berikut ini.