Daftar Isi
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:
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.
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.
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.
Linux/GNU
sudo apt install git
Windows
Download Website Official Git
https://git-scm.com/download/win
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>
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.
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/
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:
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>"
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:
Pada bagian ini kita menggabungkan repository yang kita miliki dan berasal dari fork repository utama.
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
kalau tadi kita menggunakan version-02 untuk alias maka perintahnya menjadi:
git pull version-02 master
git status
untuk menambahkan semua perubahan yang terjadi
git add -A
untuk menambahkan semua perubahan yang terjadi
git commit -m "gabungkan dua repo"
untuk mengirimkan perubahan yang sudah di commit ke git repo dengan branch version-01, lakukan
git push version-01
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
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
untuk menambahkan semua perubahan yang terjadi
git add -A
untuk mengecek ada tidaknya patch yang ingin dipakai dan membuat patchnya
git checkout -b patch-1
untuk menambahkan semua perubahan yang terjadi
git commit -m "gabungkan dua repo"
untuk mengirimkan perubahan yang sudah di commit ke git repo dengan branch version-01, lakukan
git push origin patch-1
catatan ini bertujuan menggabungkan salah satu branch ke dalam master
git checkout master
git merge dev