Friday, November 15, 2024
Debian DevOps Git Ubuntu

Cara Install Git pada Ubuntu 20.04 / Debian 11

git

“Cara Install Git pada Ubuntu 20.04 / Debian 11”

git

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
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.

Baca Juga :  Continuous Delivery with Jenkins in Kubernetes Engine

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.

Baca Juga :  Cloud Source Repositories

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.

Baca Juga :  Cara Install phpMyAdmin pada Ubuntu 20.04 / Debian 11

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.

(Visited 655 times, 1 visits today)

Similar Posts