Cara penggunaan GIT


Final | 21 Jun 2024

Daftar Isi

Introduction

Git adalah perangkat lunak pengendali versi atau proyek manajemen kode perangkat lunak yang diciptakan oleh Linus Torvalds, yang pada awalnya ditujukan untuk pengembangan kernel Linux.

Dalam konteks Git adalah konsep yang menggambarkan tiga tahap utama dalam manajemen kode versi yang digunakan oleh Git yaitu Diagram “Three Tree”.Diagram Three Tree pada Git merujuk pada tiga jenis objek yang menjadi dasar struktur dan manajemen kode dalam sistem kontrol versi Git, yang digunakan oleh GitHub. Ketiga objek tersebut adalah: Working Directory (Working Tree), Staging Area (Index), dan Repository (Git Directory). Berikut adalah penjelasan masing-masing bagian dari Three Tree:

diagram Git

  • Working Directory (Working Tree)

Definisi: Working Directory adalah tempat di mana Anda bekerja dengan file dan membuat perubahan. Ini adalah direktori kerja lokal Anda yang berisi salinan dari file proyek. Fungsi: Di sini Anda dapat membuat, mengedit, menghapus, dan mengatur file sesuai kebutuhan proyek. Perubahan: Perubahan yang dilakukan di Working Directory belum dilacak oleh Git hingga Anda secara eksplisit menambahkan file yang telah diubah ke Staging Area.

  • Staging Area (Index)

Definisi: Staging Area adalah tempat sementara yang digunakan untuk menampung perubahan sebelum mereka di-commit ke repository. Ini adalah area transit di mana perubahan yang Anda buat akan ditandai untuk di-commit. Fungsi: Dengan menambahkan perubahan ke Staging Area, Anda dapat mempersiapkan commit secara lebih selektif, memilih file atau bagian file mana yang ingin Anda commit. Perubahan: Untuk menambahkan perubahan ke Staging Area, Anda menggunakan perintah git add. Setelah itu, perubahan akan berada di Index hingga Anda melakukan commit.

  • Repository (Git Directory)

Definisi: Repository adalah tempat penyimpanan permanen untuk semua perubahan yang telah di-commit. Ini adalah basis data dari semua commit yang melacak sejarah proyek. Fungsi: Repository menyimpan semua commit, branches, tags, dan metadata proyek lainnya. Ini adalah pusat dari sistem kontrol versi yang memastikan semua versi proyek terdokumentasi dengan baik. Perubahan: Perubahan yang ditambahkan ke Staging Area akan dipindahkan ke Repository saat Anda menjalankan perintah git commit. Setiap commit diidentifikasi oleh hash unik dan menyimpan snapshot dari perubahan.

Hal pertama yang harus di pahami:

  • Repository (Repo): Tempat penyimpanan kode dan berbagai file proyek Anda. Setiap proyek di GitHub disimpan dalam sebuah repository.

  • Commit: Tindakan menyimpan perubahan yang dibuat pada file dalam repository. Setiap commit memiliki pesan commit yang menjelaskan perubahan yang dilakukan.

  • Branch: Cabang dari repository utama (master atau main) yang memungkinkan Anda untuk mengerjakan fitur atau perbaikan secara terpisah. Setiap branch dapat memiliki sejarah commit yang independen.

  • Merge: Proses menggabungkan perubahan dari satu branch ke branch lain. Biasanya digunakan untuk menggabungkan fitur atau perbaikan yang telah selesai kembali ke branch utama.

  • Pull Request (PR): Permintaan untuk menggabungkan perubahan dari satu branch ke branch lain. PR memungkinkan kolaborator untuk meninjau dan mendiskusikan perubahan sebelum digabungkan.

  • Fork: Salinan repository yang berada di akun GitHub Anda sendiri. Fork memungkinkan Anda untuk membuat perubahan pada proyek lain tanpa mempengaruhi repository aslinya.

  • Clone: Menyalin repository dari GitHub ke komputer lokal Anda. Ini memungkinkan Anda untuk bekerja pada proyek secara offline.

  • Push: Mengirimkan perubahan yang telah di-commit di komputer lokal Anda ke repository di GitHub.

  • Pull: Mengambil perubahan terbaru dari repository GitHub ke komputer lokal Anda.

  • Remote: Versi repository yang di-host di server (seperti GitHub). Remote memungkinkan Anda untuk menghubungkan repository lokal dengan repository yang di-host.

Konfigurasi Awal yang Harus Dilakukan

Install GIT

Linux/GNU sudo apt install git Windows Download Website Official Git https://git-scm.com/download/win

Konfigurasi

Konfigurasi awal yang harus dilakukan sebelum mulai menggunakan git, seperti menentukan nama dan email

git config --global user.name "<nama>"
git config --global user.email <email>

Setup SSH Key untuk Github agar Bisa Ngepush Tanpa Password

Kita bisa push ke Githut dengan dua metode yaitu melalui Protokol HTTPS dan SSH, Jika kita menggunakan HTTPS maka kita akan di minta password disetiap kali melakukan push, sedangkan kalu SSH tidak perlu, karena passwordnya akan diwakili oleh SSH Key.

Membuat SSH Key

C:\Users\Final> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Final/.ssh/id_rsa): <enter>
Enter passphrase (empty for no passphrase):<enter>
Enter same passphrase again:<enter>

Terdapat 2 key di C:\Users\Final/.ssh, yaitu private key dan public key file id_rsa adalah private key dan id_rsa.pub adalah public key

Tambahkan SSH Key ke Github Copy kunci publik yang sudah dibuat pada file id_rsa.pub

Lalu masuk ke Github buka di bagian Settings>SSH and GPG Keys, tambahkan SSH Key baru dengan mengelik New SSH Key.

Untuk Kontributor

git clone

Perintah “git clone” digunakan untuk mengunduh code yang ada pada repository.

git clone < repository yang akan di gunakan >

contoh penggunaan perintah “git clone”:

$ git clone https://github.com/bantenprov/advancetrust.git
$ cd advancetrust/

git pull

Perintah git pull ini akan sering kali digunakan apabila kita dalam bekerja membuat suatu aplikasi atau mengembangkan aplikasi secara tim.

contoh penggunaan git pull

$ git pull origin master



Setelah berhasil menjalankan perintah git clone, di sini akan di contohkan bagaimana menambahkan folder baru yang di beri nama flowchart

$ mkdir flowchart

setelah menjalankan perintah diatas maka akan ada folder baru dengan nama flowchart, selanjutnya berpindah ke folder / directory yang telah dibuat tadi, dengan menggunakan perintah:

$ cd flowchart

setelah berada di folder / directory “flowchart”, pada contoh ini akan mencoba menambahkan file baru yang di beri nama “.gitignore” dengab cara menjalankan perintah seperti di bawah ini:

$ echo "" > .gitignore

jika berhasil maka akan ada file baru dengan nama “.gitignore”, untuk melihat file yang telah berhasil di buat tadi jalankan perintah berikut:

$ ls -la

maka akan terlihat seperti gambar berikut:

sampai pada langkah ini kita telah berhasil menambahkan folder “flowchart” dan di dalam folder tersebut telah ada file “.gitignore

berikutnya kita akan update folder dan file yang sudah di buat tadi ke repository yang di clone di awal tadi dengan cara kita kembali ke folder awal yang di clone tadi dengan perintah berikut:

git add

Dengan menggunakan perintah ini, maka artinya sama aja kita menyuruh agar di git untuk melakukan penambahan (add) pada semua file dalam folder

$ cd ../
$ git add flowchart/
$ git status

jika semua berhasil dan tidak ada masalah maka akan tampil seperti gambar berikut:

perintah selanjutnya


$ git commit -m "<isi pesan>"

Untuk non Kontributor

Fork

Fork terlebih dahulu repository yg ingin di patch.

Klik tombol fork

lalu jalankan perintah ini:

git clone < url clone>

$ git clone https://github.com/feripratama/noncontrib.git

setelah itu pindah ke folder / directory yang telah di clone

$ cd noncontrib

setelah di dalam directory noncontrib (sesuaikan dengan directory yang ada)

tambahkan file baru pada local repository, dengan mejalankan perintah seperti berikut:

$ echo "" > newFile.php

atau tambahkan file yang anda ingin upload dari folder lain, misalkan nama foldernya adalah “folder-asal” (sesuaikan path folder-asal tersebut apa perintah dibawah ini:

$ cp -R ../folder-asal  .

jika tidak ada error, maka lanjutkan lagi dengan mengetikkan perintah git add:

$ git add -A
$ git status

jika menambahkan file seperti contoh diatas, maka terlihat ada penambahan file baru “ newFile.php

lanjut tambahkan branch baru pada repository dengan perintah sebagai berikut:

$ git checkout -b patch-5

sejauh ini kita telah berhasil menambahkan file baru dan menambahkan branch patch-5

lalu lanjut mengetikkan perintah git commit

$ git commit -m "add newFile.php"

jika berhasil maka tampilan seperti gambar di atas maka lanjutkan dengan mengetikkan perintah git push

$ git push origin patch-5

setelah semua berhasil, buka repository yang di fork di awal tadi terlihat ada notice patch-5 sama seperti nama branch yang kita tambahkan tadi.

lalu klik tombol Compare & pull request

setelah tombol Compare & pull request di klik maka akan di bawa ke halaman Pull request. lalu klik tombol Create pull request

jika berhasil maka tampilan akan terlihat seperti gambar di bawah:

Menggabungkan Dua Repository

Pada bagian ini kita menggabungkan repository yang kita miliki dan berasal dari fork repository utama.

Menggunakan Version

jalankan git remote add

misalkan kita alias yang akan gunakan sebagai remote repository adalah: version-02 dan repo yang akan di remmote untuk digabungkan adalah https://github.com/bantenprov/dashboard-epormas.git

git remote add version-02 https://github.com/bantenprov/dashboard-epormas.git

kemudian jalankan git pull

kalau tadi kita menggunakan version-02 untuk alias maka perintahnya menjadi:

git pull version-02 master

git status

git status

git add -A

untuk menambahkan semua perubahan yang terjadi

git add -A

git commit

untuk menambahkan semua perubahan yang terjadi

git commit -m "gabungkan dua repo"

git push

untuk mengirimkan perubahan yang sudah di commit ke git repo dengan branch version-01, lakukan

git push version-01

Menggunakan Upstream

jalankan git remote add

misalkan kita alias yang akan gunakan sebagai remote repository adalah: upstream dan repo yang akan di remmote untuk digabungkan adalah https://github.com/bantenprov/document-management-system.git

git remote add upstream https://github.com/bantenprov/document-management-system.git

kemudian jalankan git pull

kalau tadi kita menggunakan upstream untuk mengambil perubahan yang terjadi di repo asli agar tidak terjadi konflik. Penggunaan –rebase berfungsi untuk memodifikasi riwayat commit yang sudah ada. Sebagai contoh, rebase dapat dipakai untuk menggantikan merge. Walaupun memberikan hasil yang sama, keduanya memiliki “efek samping” yang berbeda. Operasi merge akan menghasilkan commit baru sementara rebase tidak! Dengan demikian, rebase menghasilkan riwayat yang lebih rapi tanpa percabangan.

git pull --rebase upstream master

git status

git status

git add -A

untuk menambahkan semua perubahan yang terjadi

git add -A

git checkout dan patch

untuk mengecek ada tidaknya patch yang ingin dipakai dan membuat patchnya

git checkout -b patch-1

git commit

untuk menambahkan semua perubahan yang terjadi

git commit -m "gabungkan dua repo"

git push

untuk mengirimkan perubahan yang sudah di commit ke git repo dengan branch version-01, lakukan

git push origin patch-1

Menggabungkan Dua Branch

catatan ini bertujuan menggabungkan salah satu branch ke dalam master

git checkout master
git merge dev

Referensi

https://github.com/bantenprov/cara-penggunaan-github