Jumat, 14 Oktober 2016
Pemateri: Herpiko Dwi Aguno
Pencatat: Raviyanto Ahmad
Pertama-tama kita pasang Git di komputer kita dan kita konfigurasi.
$ sudo apt install git
$ git config --global user.name "Nama saya"
$ git config --global user.email "email@saya.com"
Di sini saya sebagai pencatat mengisi “Nama saya” dengan “Raviyanto Ahmad” dan "email@saya.com" dengan "raviyanto@gmail.com".
Pemasangan dan konfigurasi Git tersebut kita cek.
$ git --version
$ git config user.name
$ git config user.email
Versi Git yang saya instal adalah versi 2.7.4. Hasil perintah git config user.name adalah Raviyanto Ahmad. Hasil perintah git config user.email adalah raviyanto@gmail.com.
Sekarang kita coba menginisiasi sebuah proyek baru.
$ mkdir puisi
$ cd puisi
$ git init
Hasil perintah git init adalah Initialized empty Git repository in /home/raviyanto/puisi/.git/. Di direktori puisi ada direktori tersembunyi .git.
Mari kita lihat status proyek kita.
$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
Perintah git status digunakan untuk melihat status/kondisi direktori kerja kita. Apakah ada berkas yang sudah dimodifikasi dan belum dikomit (disahkan)? Apakah ada yang tertinggal? Apakah ada berkas baru? Semua bisa dicek di sini.
Hasil perintah git status di atas menunjukkan tidak ada pengesahan baru, yang ada pengesahan awal atau initial commit.
Kita coba membuat berkas baru.
$ touch puisi1.txt
Sunting berkas tersebut menggunakan editor teks favorit masing-masing.
$ nano puisi1.txt
Tulis satu baris saja.
oh engkau yang nun jauh di sana
Simpan dan keluar dari editor. Kemudian jalankan git status.
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
puisi1.txt
nothing added to commit but untracked files present (use "git add" to track)
Berkas puisi1.txt berwarna merah. Ini berarti belum aman. Nah, di sini saya akan jelaskan alur Git. Alur Git itu ada tiga:
Sekarang kita masih di direktori kerja, belum masuk tempat penampungan. Mari kita pindah ke tempat penampungan.
$ git add puisi1.txt
Perintah tersebut membawa kita ke tempat penampungan. Contoh perintah lain.
$ git add .
$ git add --all
$ git add *.txt
Kita lihat status berkas dengan perintah git status.
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: puisi1.txt
Nah, berkas sudah berada di penampungan. Tugas kita selanjutnya adalah melakukan komit atau pengesahan.
$ git commit -m "pesan komit"
You need a passphrase to unlock the secret key for
user: "Raviyanto Ahmad <raviyanto@gmail.com>"
4096-bit RSA key, ID 7EC72E69, created 2016-10-18
[master (root-commit) fea7aa1] pesan komit
1 file changed, 1 insertion(+)
create mode 100644 puisi1.txt
Sekarang kita sudah pindah ke kepala versi (head). Mengapa di sini perlu ada tempat penampungan (stage)? Mengapa tidak langsung pindah ke kepala versi? Tujuannya adalah memudahkan kita memanajemen berkas yang lebih dari satu. Ada kalanya kita menyunting beberapa berkas untuk satu pengesahan. Tempat penampungan mempermudah pekerjaan kita.
Sekarang kita memiliki satu pengesahan (komit). Kita dapat melihat daftarnya dengan perintah git log.
$ git log
commit fea7aa1719789464aac29aa7de875982194d89a3
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sun Oct 23 11:02:18 2016 +0700
pesan komit
Mari kita sunting berkas puisi1.txt. Simpan, taruh di penampungan, lalu sahkan. Kita lihat daftar pengesahan yang kita lakukan.
$ git log
commit 5676c71d12bfac1522a56cb6f2b05a1a3ca89e8a
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sun Oct 23 11:56:07 2016 +0700
tambah satu baris
commit fea7aa1719789464aac29aa7de875982194d89a3
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sun Oct 23 11:02:18 2016 +0700
pesan komit
Setiap pengesahan punya nomor identitas. Pengesahan pertama bernomor fea7. Pengesahan kedua bernomor 5676.
Kita ingin pindah ke pengesahan pertama.
$ git checkhout fea7
Note: checking out 'fea7'.
You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at fea7aa1... pesan komit
Artinya, kita tidak berada di cabang mana pun. Status kepala versi kita mengambang, lepas dari cabang mana pun. Mari kita cek cabang yang ada.
$ git branch
* (HEAD detached at fea7aa1)
master
Sebelumnya kita berada di cabang master. Setelah berpindah ke pengesahan pertama, kita berada di cabang yang mengambang. Ini tidak aman. Kita perlu membuat cabang yang sah. Perintah checkout tidak hanya berfungsi berpindah pengesahan atau pencabangan, tapi juga membuat pencabangan baru.
$ git checkout -b pesanawal
Artinya, dari pengesahan tersebut, saya membuat pencabangan baru. Nama cabangnya pesanawal. Di situ ada opsi -b (branch). Sekarang kita lihat daftar cabang lagi.
$ git branch
master
* pesanawal
Kita berada di cabang pesanawal. Dari mana kita tahu? Ada tanda bintang (*) di depannya.
Oke, kita lanjut. Cabang-cabang ini bisa kita gabung (merge). Kita sekarang punya dua cabang, yaitu master dan pesanawal. Kita kembali ke cabang master.
$ git checkout master
Setelah berada di master dan berada di pengesahan terakhir, kita buat cabang baru. Namanya pesankedua.
$ git checkout -b pesankedua
Kedua cabang ini–master dan pesankedua–statusnya sama, pengesahannya sama. Anggap saja master adalah cabang pengembangan utama, yang resmi dan bakal rilis. Cabang pesankedua bersifat eksperimen. Kita membuat cabang baru (pesankedua) supaya kita fokus di situ. Biarkan master bersih.
Sekarang kita berada di cabang pesankedua. Mari kita sunting puisinya lalu simpan.
$ git status
On branch pesankedua
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: puisi1.txt
no changes added to commit (use "git add" and/or "git commit -a")
Statusnya belum aman karena belum masuk ke penampungan dan pengesahan.
$ git add --all
$ git commit -m "pesan kedua"
$ git log
Sekarang kita punya tiga pengesahan.
commit 6a654ef35830d3eb35b3427c85a7de6a96d1e2ae
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sun Oct 30 21:20:39 2016 +0700
pesan kedua
commit 5676c71d12bfac1522a56cb6f2b05a1a3ca89e8a
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sun Oct 23 11:56:07 2016 +0700
tambah satu baris
commit fea7aa1719789464aac29aa7de875982194d89a3
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sun Oct 23 11:02:18 2016 +0700
pesan komit
Pada cabang pesankedua kita punya tiga pengesahan. Ini lebih baru daripada cabang master. Nah, ceritanya kita ingin menggabungkan kedua cabang ini. Kita bawa fitur baru di cabang pesankedua ke master.
Sebelum kita gabungkan, ada baiknya kita cek dulu.
$ git diff master
diff --git a/puisi1.txt b/puisi1.txt
index 8466d82..23ff8ff 100644
--- a/puisi1.txt
+++ b/puisi1.txt
@@ -1,2 +1,3 @@
oh engkau yang nun jauh di sana
datanglah ke sini bersama angin
+bercengkerama di pantai cita
Yang bertanda + dan - menunjukkan perubahan. Tanda + artinya ada penambahan baris. Tanda - artinya ada pengurangan baris. Sekarang kita mau gabung pesankedua ke master. Kita pindah terlebih dulu ke master. Lalu kita gabungkan.
$ git checkout master
$ git merge pesankedua
Perintah git merge tersebut hasilnya sebagai berikut.
Updating 5676c71..6a654ef
Fast-forward
puisi1.txt | 1 +
1 file changed, 1 insertion(+)
Nah, penggabungan berhasil.