“Cara Install Git pada Ubuntu 20.04 / Debian 11”
Daftar Isi
Pendahuluan
Git adalah sistem kontrol versi terdistribusi paling populer di dunia yang digunakan oleh banyak proyek sumber terbuka dan komersial. Ini memungkinkan Anda untuk berkolaborasi dalam proyek dengan sesama pengembang, melacak perubahan kode Anda, kembali ke tahap sebelumnya, membuat cabang, dan banyak lagi. Git awalnya dikembangkan oleh Linus Torvalds, pencipta kernel Linux.
Install Git Dengan Apt
sudo apt update -y
- Install Git
sudo apt install git -y
- Cek Versi
git --version
Installing Git Dari Source
sudo apt update -y
- Install dependensi
sudo apt install dh-autoreconf libcurl4-gnutls-dev libexpat1-dev make gettext libz-dev libssl-dev libghc-zlib-dev
- Download git
wget -c https://github.com/git/git/archive/v2.26.2.tar.gz -O - | sudo tar -xz -C /usr/src
- Install git
cd /usr/src/git-* sudo make prefix=/usr/local all sudo make prefix=/usr/local install
- cek versi
git --version
Konfigurasi Git
git config --global user.name "Your Name" git config --global user.email "youremail@yourdomain.com"
- Cek nama dan email
git config --list
Membuat Repository
git init namadir
Contoh :
git init projek1
git init /var/www/html/projek1
Perintah tersebut akan membuat direktori bernama projek1. Kalau direktorinya sudah ada, maka Git akan melakukan inisialisasi di dalam direktori tersebut.
git init .
Perintah tersebut akan membuat repositori pada direktori saat ini.
nano .gitignore
/vendor1/
/upload1/
/cache1
test1.php
.gitignore merupakan sebuah file yang berisi daftar nama-nama file dan direktori yang akan diabaikan oleh Git.
Perubahan apapun yang kita lakukan terhadap file dan direktori yang sudah masuk ke dalam daftar .gitignore tidak akan dicatat oleh Git.
Perubahan Revisi dengan Git Commit
- Tambahkan beberapa file misal di repository kosong
touch index.html
touch update.html
tuch test.html
git status
- Beberapa Kondisi untu Revisi
1. Modified
Modified adalah kondisi dimana revisi atau perubahan sudah dilakukan, tetapi belum ditandai dan belum disimpan di version control. Contohnya pada gambar di atas, ada tiga file HTML yang dalam kondisi modified.
2. Staged
Staged adalah kondisi dimana revisi sudah ditandai, tetapi belum disimpan di version control. Untuk mengubah kondisi file dari modified ke staged gunakan perintah git add nama_file
. Contoh:
git add index.html
3. Commited
Commited adalah kondisi dimana revisi sudah disimpan di version control. perintah untuk mengubah kondisi file dari staged ke commited adalah git commit
.
Membuat Revisi Pertama
Baiklah, sekarang kita akan sudah tahu kondisi-kondisi file dalam Git. Selanjutnya, silahkan ubah kondisi tiga file HTML tadi menjadi staged dengan perintah git add
.
git add index.html
git add about.html
git add contact.html
Atau kita bisa melakukannya seperti ini:
git add index.html about.html contect.html
atau:
git add *.html
Atau seperti ini (semua file dan direktori):
git add .
Setelah itu, cobalah ketik perintah git status
lagi. Kondisi filenya sekarang akan menjadi staged.
Setelah itu, ubah kondisi file tersebut ke commited agar semua perubahan disimpan oleh Git.
git commit -m "Commit pertama"
Setelah itu, coba cek dengan perintah git status
lagi.
Membuat Revisi kedua
Ceritanya ada perubahan yang akan kita lakukan pada file index.html
. Silahkan modifikasi isi file index.html
. Sebagai contoh saya mengisinya seperti ini.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Semua, Saya sedang belajar Git</p>
</body>
</html>
Setelah itu ketik lagi perintah git status
.
Terilhat di sana, file index.html
sudah dimodifikasi. Kondisinya skarang berada dalam modified. Lakukan commit lagi seperti revisi pertama.
git add index.html
git commit -m "ditambahkan isi"
Melihat Catatan Log Revisi
Git sudah menyediakan perintah git log
untuk melihat catatan log perubahan pada respositori. Contoh penggunaannya:
git log
Log yang Lebih Pendek
Untuk menampilkan log yang lebih pendek, kita bisa menambahkan argumen --oneline
.
git log --oneline
Maka akan menghasilkan output:
06f735a ditambahkan isi
cf08ca0 commit pertama
Log pada Nomer Revisi/Commit
Untuk melihat log pada revisi tertentu, kita bisa memasukan nomer revisi/commit.
git log cf08ca0837cf26f1c595be36bb3a6b815e311be1
Log pada File Tertentu
Untuk melihat revisi pada file tertentu, kita dapat memasukan nama filenya.
git log index.html
Log Revisi yang dilakukan oleh Author Tertentu
Misalkan dalam repositori dikerjakan oleh banyak orang. Maka kita dapat melihat revisi apa saja yang dilakukan oleh orang tertentu dengan perintah berikut.
git log --author='yubyanime'
Melihat Perbandingan Revisi dengan Git Diff
Melihat Perbandingan Perubahan yang Dilakukan pada Revisi
Gunakan perintah berikut ini untuk melihat perubahan yang dilakukan pada revisi tertentu.
git diff cf08ca0837cf26f1c595be36bb3a6b815e311be1
cf08ca0837cf26f1c595be36bb3a6b815e311be1
adalah nomer revisi yang ingin dilihat.
simbol plus (+
) artinya kode yang ditambahkan. Sedangkan kalau ada kode yang dihapus simbolnya akan menggunakan minus (-
).
Contoh:
Ditambahkan:
+ <p>ini kode yang ditambahkan</p>
Dihapus:
- <i>ini kode yang dihapus</i>
Dimodifikasi/diubah:
- <span>ini kode sebelum diubah</span>
+ <span>ini kode sesudah diubah</span>
Sekarang kita akan mencoba merubah isi dari index.html
.
Sebelum diubah:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Semua, Saya sedang belajar Git</p>
</body>
</html>
Setelah diubah:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Dunia!, Saya sedang belajar Git</p>
</body>
</html>
Setelah itu lakukan jalankan perintah git diff
lagi.
git diff
Apa yang dilakukan git diff
? Perintah git diff
akan membandingkan perubahan yang baru saja dilakukan dengan revisi/commit terakhir.
Melihat Perbandingan pada File
Apa bila kita melakukan banyak perubahan, maka akan banyak sekali tampil output. Karena itu, kita mungkin hanya perlu melihat perubahan untuk file tertentu saja. Untuk melihat perbandingan perubahan pada file tertentu, gunakan perintah berukut.
git diff index.html
Perintah di atas akan melihat pebedaan perubahan pada file index.html
saja.
Melihat Perbandingan antar Revisi/Commit
Perintah untuk membandingkan perubahan pada revisi dengan revisi yang lain adalah sebagai berikut.
git diff <nomer commit> <nomer commit>
contoh:
git diff cf08ca0837cf26f1c595be36bb3a6b815e311be1 06f735af7724558164c87f6b1ce3ca7778eb1c1b
Perbandingan Antar Cabang (Branch)
Kita memang belum masuk ke materi percabangan di Git. Tapi tidak ada salahnya megetahui cara melihat perbandingan perubahan antar cabang.
git diff <nama cabang> <nama cabang>
Perintah untuk Membatalkan Revisi
Terkadang pada perubahan yang kita lakukan terjadi kesalahan dan kita ingin mengembalikannya seperti keadaan sebelumnya. Maka kita perlu menyuruh git untuk megembalikannya. Ada beberapa perintah yang digunakan diantaranya: git checkout
, git reset
, dan git revert
.
Membatalkan Perubahan
Jika revisi kita belum staged ataupun committed, kita bisa mengembalikannya menggunakan perintah git checkout nama_file.html
.
Contoh: Misalkan kita akan merubah isi dari file index.html
pada repositori project-01
.
Sebelum diubah:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Dunia!, Saya sedang belajar Git</p>
</body>
</html>
Setelah diubah:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Dunia!, Saya sudah belajar Git</p>
<p>Belajar git ternyata cukup menyenangkan</p>
</body>
</html>
Hasil git diff
:
$ git diff
diff --git a/index.html b/index.html
index c5082e6..115efcb 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
<title>Belajar Git - Project 01</title>
</head>
<body>
- <p>Hello Dunia!, Saya sedang belajar Git</p>
+ <p>Hello Dunia!, Saya sudah belajar Git</p>
+ <p>Belajar git ternyata cukup menyenangkan</p>
</body>
</html>
Sekarang kita akan membatalkan perubahan tersebut. Karena kita belum melakukan stage dan commit, maka kita bisa menggnakan perintah:
git checkout index.html
Perubahan yang baru saja kita lakukan akan dibatalkan. Kalau tidak percaya, coba saja periksa file yang sudah dirubah tadi atau cek dengan perintah git status
.
$ git status
On branch master
nothing to commit, working directory clean
Membatalkan Perubahan File yang Sudah dalam Kondisi staged
Kondisi staged merupakan kondisi file yang sudah di add (git add
), namun belum disimpan (git commit
) ke dalam Git.
Sebagai contoh, kita lakukan perubahan lagi di file index.html
seperti pada contoh sebelumnya.
$ git diff
diff --git a/index.html b/index.html
index c5082e6..c99aa5b 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
<title>Belajar Git - Project 01</title>
</head>
<body>
- <p>Hello Dunia!, Saya sedang belajar Git</p>
+ <p>Hello Dunia!, Saya sudah belajar Git</p>
+ <p>Belajar git ternyata gampang-gampang susah</p>
</body>
</html>
Setelah itu, kita ubah kondisi file menjadi staged dengan perintah:
git add index.html
Cek statunya dulu:
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: index.html
Nah, file index.html
sudah masuk ke dalam kondisi staged. Untuk mengubahnya menjadi kondisi modified, kita bisa menggunakan perintah git reset
.
git reset index.html
Cek statusnya lagi:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Sekarang file index.html
sudah dalam kondisi modified, kita bisa membatalkan perubahannya dengan perintah git checkout
seperti contoh sebelumnya.
git checkout index.html
Maka perubahan yang kita lakukan akan dibatalkan.
Membatalkan Perubahan File yang Sudah dalam Kondisi Commited
Sekarang bagaimana kalau filenya sudah dalam kondisi commited dan kita ingin mengembalikannya? Untuk melakukan ini, kita harus mengetahui nomer commit, kemudian mengembalikan perubahannya seperti pada nomer commit tersebut.
Misalkan, kita ubah kembali file index.html
.
$ git diff
diff --git a/index.html b/index.html
index c5082e6..3c150a8 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
<title>Belajar Git - Project 01</title>
</head>
<body>
- <p>Hello Dunia!, Saya sedang belajar Git</p>
+ <p>Hello Dunia!, Saya sudah belajar Git</p>
+ <p>Belajar Git Greget!</p>
</body>
</html>
Kemudian kita melakukan commit.
git add index.html
git commit -m "belajar git greget!"
Sekarang kita akan melihat nomer commit dengan perintah git log
.
Kita akan mengembalikan kondisi file index.html
, seperti pada commit sebelumnya. Maka kita bisa menggunakan perintah:
git checkout b05f7d05c9298f2cd11b870369f3cf4b2350eca7 index.html
Seperti mesin waktu, kita sudah mengembalikan keadaan file index.html
seperti keadaan saat commit tersebut. Namun, saat ini kondisi index.html
dalam keadaan staged. Kita bisa kembalikan ke dalam kondisi modified dengan perintah git reset
.
git reset index.html
Pada contoh tersebut, kita sudah berhasil mengembalikan file index.html
ke dalam keadaan seperti commit sebelumnya.
Apabila kita ingin mengembalikan seluruh file dalam commit, kita cukup melakukan checkout ke nomer commit saja, tanpa diikuti nama file. Contoh:
git checkout ac6d798f98bac5fad693ef8159f957c5b0805c23
Catatan: Perintah ini akan mengembalikan semua file dalam kondisi pada nomer commit yang diberikan, namun bersifat temporer.
Kembali ke 3 Commit sebelumnya
Untuk kembali ke 3 commit sebelumnya, kita bisa menggunakan perintah berikut.
git checkout HEAD~3 index.html
Membatalkan Semua Perubahan yang ada
Jika kita ingin mengembalikan semua file ke suatu commit, kita bisa melakukannya dengan perintah:
git revert -n <nomer commit>
Contoh:
git revert -n 2400ba0e258bd6a144caa273012b130d6baa5e42
Menggunakan Percabangan untuk Mencegah Konflik
Bayangkan anda sedang bekerja dengan tim pada suatu repositori Git. Repositori ini dikerjakan secara bersama-sama.
Kadang… akan terjadi konflik, karena kode yang kita tulis berbeda dengan yang lain.
Misalnya, Si A menulis kode untuk fitur X dengan algoritma yang ia ketahui. Sedangkan si B menulis dengan algoritma yang berbeda.
Lalu mereka melakukan commit, dan kode sumber jadi berantakan. Anggota tim yang lain menjadi pusing.
Cara Membuat Cabang Baru
Perintah untuk membuat cabang adalah git branch
, kemudian diikuti dengan nama cabangnya.
Contoh:
git branch fitur_register
Maka Git akan membuat cabang bernama fitur_register
.
Untuk melihat cabang apa saja yang ada di repositori, gunakan perintah git branch
.
Contoh:
$ git branch
halaman_login
* master
Tanda bintang (*
) artinya cabang yang sedang aktif atau Kita sedang berada di sana.
Latihan
Untuk memantapkan pemahaman tentang percabangan Git, mari kita coba praktik.
Pada repositori, buatlah sebuah cabang baru.
git branch halaman_login
Setelah itu, pindah ke cabang yang baru saja kita buat dengan perintah:
git checkout halaman_login
git status
Lalu tambahkan file login.html
, isinya terserah anda.
Kita sudah menambahkan file login.html
. Selanjutnya kita lakukan commit.
git add login.html
git commit -m "membuat file login.html"
revisi kita pada cabang halaman_login
sudah disimpan. Sekarang coba kembali ke cabang master
.
git checkout master
Apakah anda menemukan file login.html
?
Pasti tidak!
Sekarang kembali lagi ke cabang halaman_login
.
git checkout halaman_login
Cek lagi, apakah sekarang file login.html
sudah ada?
project-01/
├── index.html
└── login.html
kita bisa mengambil kesimpulan, kalau perubahan pada cabang halaman_login
tidak akan berpengaruh di cabang master
.
Menggabungkan Cabang
Anggaplah kita sudah selesai membuat fitur login di cabang halaman_login
. Sekarang kita ingin Menggabungkannya denga cabang master
(utama).
Pertama, kita harus pindah dulu ke cabang master.
git checkout master
Setelah itu, barulah kita bisa menggabungkan dengan perintah git merge
.
git merge halaman_login
Sekarang lihat, file login.html
sudah ada di cabang master
.
Mengatasi Bentrok
Bentrok biasanya terjadi jika ada dua orang yang mengedit file yang sama.
sekarang kita akan coba membuat bentrokan.
Pindah dulu ke branch halaman_login
…
git checkout halaman_login
Setela itu, edit file login.html
atau index.html
, karena kedua file tersebut ada di kedua cabang yang akan kita gabungkan.
$ git diff
diff --git a/login.html b/login.html
index 23a3f5c..eea5658 100644
--- a/login.html
+++ b/login.html
@@ -1 +1 @@
-di sini berisi kode untuk halaman login
+<p>di sini berisi kode untuk halaman login<p>
Setelah itu, lakukan commit lagi:
git add login.html
git commit -m "ubah isi login.html"
Selanjutnya pindah ke cabang master
dan lakukan perubahan juga di cabang ini. Ubah file yang sama seperti di cabang halaman_login
.
Setelah itu, lakukan commit di cabang master
git add login.html
git commit -m "ubah isi login.html di cabang master"
Terakhir, coba gabungkan cabang halaman_login
dengan cabang master
, maka akan terjadi bentrok.
$ git merge halaman_login
Auto-merging login.html
CONFLICT (content): Merge conflict in login.html
Automatic merge failed; fix conflicts and then commit the result.
Nah, kita disuruh perbaiki kode yang bentrok. Sekarang buka login.html
dengan teks editor.
Kedua kode cabang dipisahkan dengan tanda ======
. Sekarang.. tugas kita adalah memperbaikinya.
Silahkan eliminasi salah satu dari kode tersebut.
Setelah itu lakukan commit untuk menyimpan perubahan ini.
git add login.html
git commit -m "perbaiki konflik"
Menghapus Cabang
Cabang yang sudah mati atau tidak ada pengembangan lagi, sebaiknya dihapus.
Cara menghapus cabang, gunakan perintah git branch
dengan argumen -d
dan diikuti dengan nama cabangnya.
Contoh:
git branch -d halaman_login
Perbedaan Git checkout, Git Reset, dan Git Revert
Git Checkout
Perintah git checkout
seperti mesin waktu, kita bisa kembalikan kondisi file proyek seperti waktu yang dituju.
Misalnya:
git checkout 06f735af7724558164c87f6b1ce3ca7778eb1c1b
Maka semua file akan dikembalikan seperti keadaan pada nomer commit tersebut.
Akan tetapi, ini bersifat temporer (sementara). Pengembalian ini tidak disimpan dalam database Git.
Kita bisa sebut perintah git checkout
sebagai perintah untuk mengecek kondisi file di setiap commit.
Selain itu juga, perintah ini digunakan untuk berpindah dan membuat cabang. Ini bisa kita gunakan untuk membuat perubahan baru berdasarkan kode di masa lalu.
Contoh:
Misalnya kita ingin membuat cabang baru berdasarkan kondisi kode di masa lalu, maka kita bisa menggunakan perintah:
git checkout -b nama_cabang <nomer_commit>
Maka nanti cabang baru akan terbentuk dari commit sebelumnya.
Git Reset
Perintah git reset
sering disebut sebagai perintah berbahaya yang dapat menghancurkan catatan sejarah perubahan.
Hati-hati! Perintah ini membuat kita tidak bisa kembali lagi ke masa depan. Mau tidak mau, kita harus menulis ulang sejarah.
Perintah ini memiliki tiga argumen atau opsi utama, yaitu --soft
, --mixed
, dan --hard
.
--soft
akan mengebalikan dengan kondisi file dalam keadaan staged--mixed
akan mengebalikan dengan kondisi file dalam keadaan modified--hard
akan mengebalikan dengan kondisi file dalam keadaan commited
Contoh penggunaan:
git reset --soft 06f735af7724558164c87f6b1ce3ca7778eb1c1b
Git Revert
Revert artinya mengembalikan. Perintah ini lebih aman daripada git reset
, karena tidak akan menghapus catatan sejarah revisi.
Revert akan akan mengambil kondisi file yang ada di masa lalu, kemudian menggabungkannya dengan commit terakhir.
git log
misal mau kembali ke commit ke dua
gi revert nocommit
Kesimpulan nya :
- Perintah
git checkout
mengembalikan file dalam kondisi sebelumnya, tapi bersifat sementara. - Perintah
git reset
, akan mengembalikan file ke kondisi sebelumnya, kemudian menghapus catatan sejarah commit beikutnya. - Perintah
git revert
mengembalikan file dengan tidak menghapus sejarah commit.
Penutup
Sahabat Blog Learning & Doing demikianlah penjelasan mengenai Cara Install Git pada Ubuntu 20.04 / Debian 11. Semoga Bermanfaat . Sampai ketemu lagi di postingan berikut nya.