TUTORIAL GIT BY SEL
Cara Install Git di Windows
1. Instalasi Git di Windows memang tidak seperti di Linux yang ketik perintah langsung
terinstal.
2. Kita harus men-download dulu, kemudian melakukan ritual next>next>finish.
3. Tapi dalam ritual tersebut, ada pilihan yang harus diperhatikan agar perintah git
dapat dikenali di CMD.
Download Git
Silahkan buka website resminya Git (git-scm.com). Kemudian unduh Git sesuai dengan
arsitektur komputer kita. Kalau menggunakan 64bit, unduh yang 64bit. Begitu juga kalau
menggunakan 32bit.
Langkah-langkah Install Git di Windows
Baiklah, mari kita mulai ritual instalnya. Silahkan klik 2x file instaler Git yang sudah
diunduh.
Maka akan muncul infomasi lisensi Git, klik Next > untuk melanjutkan.
Selanjutnya menentukan lokasi instalasi. Biarkan saja apa adanya, kemudian klik Next >.
Selanjutnya pemilihan komoponen, biarkan saja seperti ini kemudian klik Next >.
Selanjutnya pemlilihan direktori start menu, klik Next >.
Selanjutnya pengaturan PATH Environment. Pilih yang tengah agar perintah git dapat di
kenali di Command Prompt (CMD). Setelah itu klik Next >.
Selanjutnya konversi line ending. Biarkan saja seperti ini, kemudian klik Next >.
Selanjutnya pemilihan emulator terminal. Pilih saja yang bawah, kemudian klik Next >.
Selanjutnya pemilihan opsi ekstra. Klik saja Next >.
Selanjutnya pemilihan opsi ekspreimental, langsung saja klik Install untuk memaulai
instalasi.
Tunggu beberapa saat, instalasi sedang dilakukan.
Setelah selesai, kita bisa langsung klik Finish.
Selamat, Git sudah terinstal di Windows. Untuk mencobanya, silahkan buka CMD atau
PowerShell, kemudian ketik perintah git --version.
3. Konfigurasi Awal yang Harus Dilakukan
Ada beberapa konfigurasi yang harus dupersiapakan sebelum mulai menggunakan Git,
seperti name dan email.
Silahkan lakukan konfigurasi dengan perintah berikut ini.
git config --global user.name "NamaUser"
git config --global user.email contoh@gmail.com
Kemudian periksa konfigurasinya dengan perintah:
git config --list
Apabila berhasil tampil seperti gambar berikut ini, berarti konfigurasi berhasil.
Konfigurasi core.editor bersifat opsional. Sedangkan name dan email wajib.
Jika kamu memiliki akun Github, Gitlab, Bitbucket atau yang lainnya…maka username
dan email harus mengikuti akun tersebut agar mudah diintegrasikan.
Membuat Repository pada local storage
Simpan Perubahan Revisi dengan Git Commit
Pada bagian sebelumnya kita sudah membuat repositori kosong. Belum ada apa-apa di sana.
Sekarang coba tambahkan sebuah file baru.
Sebagai contoh, saya akan menambahkan tiga file HTML kosong.
Masuk ke drive dimana htdocs/lokasi folder proyekweb yang kita buat berada
Setalah masuk ke folder dimana projek didimpan, coba ketik perintah git status untuk
melihat status repositorinya.
Berdasarkan keterangan di atas, saat ini kita berada cabang (branch) master dan ada tiga file
yang belum ditambahkan ke Git.
Tiga Kelompok Kondisi File dalam Git
Sebelum kita membuat revisi, kita akan berkenalan dulu dengan tiga kondisi file dalam Git.
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.
Jika semua file direvisi maka perintanhnya
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.
Setelah itu cek kemlai dengan perintah git status
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 Mahasiswa UBSI sedang belajar Git</p>
</body>
</html>
Setelah itu ketik lagi perintah git status.
Terilhatdi sana,file index.html sudah dimodifikasi.Kondisinyaskarangberadadalam modified.
Lakukancommit lagi seperti revisipertama.
Dengandemikian,revisi keduasudahdisipanolehGit.Mungkinandabelumtahumaksuddari
argumen-m, argumentersebutuntukmenambahkanpesansetiapmenyimpanrevisi.
Melihat Catatan Log Revisi
Melihat Perbandingan Revisi dengan Git Diff
Ubah kode menjadi
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Semua, Saya Mahasiswa UBSI sedang belajar </p>
</body>
</html>
Kemudianketik
04320327a42eec443f99ddb1e4fbd0b3865e7ce1 (kode file)
Melihat Perbandingan pada File
Perintah untuk Membatalkan Revisi
Sekarangkitaakan membatalkanperubahantersebut.Karenakitabelummelakukan stagedan
commit,maka kitabisamenggnakanperintah:
Perubahanyangbaru sajakita lakukanakandibatalkan.Kalautidakpercaya,cobasajaperiksafile
yang sudahdirubahtadi atau cekdenganperintah git status.
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.
Agar tidak terjadi hal yang seperti ini, kita harus membuat cabang (branch) tersendiri.
Misalnya, si A akan mengerjakan fitur X, maka dia harus membuat cabang sendiri. Si A akan
bebas melakukan apapun di cabangnya tanpa menggangu cabang utama (master).
Cara Membuat Branch baru
Perintah untuk membuat cabang adalah git branch, kemudian diikuti dengan nama
cabangnya.
Untuk melihat cabang apa saja yang ada di repositori, gunakan perintah git branch.
Tanda bintang (*) artinya cabang yang sedang aktif atau Kita sedang berada di sana.
LATIHAN
Pada repositori, buatlah sebuah cabang baru. Dengan nama silahkan ketua kelompok
menujuk anggotanya membuat fitur yang dibutuhkan dalam projek webnya
Dibawah ini sebagai contoh
Setelah itu, pindah ke cabang yang baru saja kita buat dengan perintah:
Lalu tambahkan file sesuai kebutuhan masing-masing
Sebagai contoh
Kemudian ketik git status
Kita sudah menambahkan file login.html. Selanjutnya kita lakukan commit.
Bagus! revisi kita pada cabang halaman_login sudah disimpan. Sekarang coba kembali ke
cabang master.
Apakah anda menemukan file login.html?
Pasti tidak!
Sekarang kembali lagi ke cabang halaman_login.
Cek lagi, apakah sekarang file login.html sudah ada?
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.
Setelah itu, barulah kita bisa menggabungkan dengan perintah git merge.
Sekarang lihat, file login.html sudah ada di cabang master.
Mengatasi Bentrok
Bentrok biasanya terjadi jika ada dua orang yang mengedit file yang sama.
Kenapa bisa begitu, ‘kan mereka sudah punya cabang masing-masing?
Bisa jadi, di cabang yang mereka kerjakan ada file yang sama dengan cabang lain. Kemudian,
saat digabungkan terjadi bentrok.
Mengatasi bentrok adalah tugas dari pemilik atau pengelola repostiri. Dia harus bertindak
adil, kode mana yang harus diambil.
Biasanya akan ada proses diskusi dulu dalam mengambil keputusan.
Baiklah, 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"
Bagus! bentrokan antar ormas programmer sudah beres .
Menghapus Cabang
Cabang yang sudah mati atau tidak ada pengembangan lagi, sebaiknya dihapus.
Agar repositori kita bersih dan rapi.
Cara menghapus cabang, gunakan perintah git branch dengan argumen -d dan diikuti
dengan nama cabangnya.
Contoh:
git branch -d halaman_login
Bekerja dengan Remote Repositori
Pada proyek pengembangan software yang melibatkan banyak orang (tim), kita tidak hanya
akan menyimpan sendiri repository proyeknya.
Semua tim yang terlibat dalam pengkodean (coding) akan menyimpan repository lokal di
komputernya masing-masing.
Setelah itu, akan dilakukan penggabungan ke repository inti atau remote.
Biasanya akan ada repository pusat atau untuk menyimpan source code yang sudah
digabungkan (merge) dari beberapa orang.
Di mana nyimpan repository remote-nya?
Bisa di server kantor atau bisa juga menggunakan layanan seperti Github, Gitlab, Bitbucket,
dll.
Github adalah layanan yang paling populer untuk menyimpan (hosting) repository secara
remote. Banyak proyek open source tersimpan di sana.
Kita akan menggunakan Github pada tutorial ini, pastikan kamu sudah memiliki akun Github.
Membuat Repository di Github
Silahkan buka Github, kemudian buat sebuah repository dengan nama belajar-git seperti
berikut ini.
Maka sekarang kita punya repository kosong di Github.
Jangan diapa-apakan dulu.
Silahkan buka kembali repository lokal yang pernah kita buat, yaitu project-01.
Kita akan upload ke Github.
Menambahkan dan Menghapus Remote
Sebelum kita bisa upload semua revisi yang ada di repository lokal, kita harus menambahkan
remote-nya terlebih dahulu.
Remote dapat kita tambahkan dengan perintah seperti ini:
Ada dua pilihan URL remote yang bisa kita berikan:
Melalui HTTPS:
https://github.com/petanikode/belajar-git.git
dan melalui SSH:
git@github.com:petanikode/belajar-git.git
Apa bedanya?
Kalau kita menggunakan HTTPS, maka kita akan diminta password setiap kali melakukan
push.
Sedangkan yang menggunakan SSH, kita tidak akan diminta password. Namun, kita harus
melakukan konfigurasi SSH Key terlebih dahulu.
Saya lebih suka yang menggunakan SSH.
Maka perintah untuk menambahkan remotenya akan menjadi seperti ini:
git remote add github git@github.com:petanikode/belajar-git.git
Setelah itu, silahkan ketik perintah git remote -v untuk melihat remote apa saja yang
sudah ditambahkan.
Bagus, sekarang kita sudah menambahkan remote di dalam repository lokal.
Selanjutnya kita bisa melakukan push atau mengirim revisi ke repository remote (Github).
Nah untuk menghapus dan mengubah nama remote dapat dilakukan dengan perintah berikut:
Ubah nama remote:
git remote rename github kantor
Keterangan:
 github adalah namalama
 kantor adalah namabaru
Hapus remote:
git remote remove github
keterangan:
 github adalah namaremote yangakan dihapus.
Mengirim Revisi ke Remote Repository
Perintah yang kita gunakan untuk mengirim revisi ke repository remote adalah git push.
git push github master
Keterangan:
 github adalah namaremote.
 master adalah namacabang tujuan.
Mari kita coba…
Pastikan repository lokal kita sudah memiliki remote.
Setelah itu lakukan beberpa revisi atau commit.
git add .
git commit -m "menambahkan beberapa revisi"
Sebagai contoh, saya memiliki 5 catatan revisi.
Maka tinggal kita kirim saja dengan perintah git push github master.
Jika muncul seperti ini, artinya push sukses dilakukan.
Sekarang lihat ke Github, pasti semuanya sudah ter-upload ke sana.
Mudah bukan?
Biar mantap, coba buat revisi lagi di file index.html.
Misalnya perubahannya seperti ini:
Lalu lakukan commit dan push.
git add index.html
git commit -m "mengubah judul dan teks di body"
git push github master
Jika berhasil, maka akan tampil seperti ini.
Periksa kembali repository di Github dan perhatikanlah perubahanya.
Jika ktia klik commit terakhir, maka kita akan dibawa ke git diff-nya Github.
Di sana kita bisa melihat perubahan apa saya yang dilakukan pada commit tersebut.
Mengambil Revisi dari Remote Repository
Saat kita bekerja dengan repository yang memiliki banyak kontributor, kita seharusnya
mengambil dulu revisi terbaru dari repository inti agar tidak bentrok.
Misalnya begini.
Pada repository remote ada kontributor lain yang sudah menambahkan dan merubah sesuatu
di sana.
Maka kita harus mengambil perubahan tersebut, agar repository lokal kita tetap ter-update
atau sama persis seperti repository remote.
Ada dua perintah untuk mengambil revisi dari repository remote:
1. git fetch [nama remote] [nama cabang]
2. git pull [nama remote] [nama cabang]
Apa perbedaanya?
Perintah git fetch hanya akan mengambil revisi (commit) saja dan tidak langsung
melakukan penggabungan (merge) terhadap repository lokal.
Sedangkan git pull akan mengambil revisi (commit) dan langsung melakukan
penggabungan (merge) terhadap repository lokal.
Terus kita harus pakai yang mana?
Tergantung dari situasi dan kondisi.
Bila kita sudah membuat perubahan di repository lokal, maka sebaiknya menggunakan git
fetch agar perubahan yang kita lakukan tidak hilang.
Namun, bila kita tidak pernah melakukan perubahan apapun dan ingin mengambil versi
terakhir dari repository remote, maka gunakanlah git pull.
Mengambil Revisi dengan git fetch
Baiklah, sekarang mari kita coba praktekkan.
Silahkan buka github, dan tambahkan file README.md melalui Github.
Klik tombol add README.
Setelah itu, isilah file RAEDME.md dengan apapun yang kamu inginkan.
Sebagai contoh, saya mengisinya seperti ini:
Setelah selesai, simpan perubahan dengan melakukan commit langsung dari Github.
Pesan commit bersifat opsional, boleh di isi boleh tidak. Karena Github akan membuatkannya
secara otomatis.
Sekarang ada perubahan baru di repository remote dan kita akan mengambil perubahan
tersebut.
Mari kita lakukan dengan perintah git fetch.
Revisi sudah diambil, tapi belum ada file README.md di dalam repository lokal.
Kenapa bisa begitu?
Ya, balik lagi dari pengertian git fetch. Dia hanya bertugas mengambil revisi saja dan
tidak langsung menggabungkannya dengan repository lokal.
Coba kita cek dengan git log.
Pada gambar di atas terlihat perbedaan log antara repository lokal dengan repository remote.
Bila ingin mengecek apa saja perbedaannya, coba gunakan perintah git diff.
git diff master github/master
Keterangan:
 master adalah cabangmaster di repositorylokal.
 github/master adalah cabangmaster di repositoryremote.
Hasil outputnya kira-kira akan seperti ini:
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1174eb2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# belajar-git
+
+Repository ini adalah repository untuk belajar Git. Silahkan baca materi
tentang [git remote di Petani Kode](https://www.petanikode.com/git-remote).
+
+Atau mulai belajar Git dari awal:
+
+- [Tutorial Git 01 - Instalasi Git dan Perisiapan
Awal](https://www.petanikode.com/git-install/)
+- [Tutorial Git 02 - Membuat Repositori
Git](https://www.petanikode.com/git-init/)
+- [Tutorial Git 03 - Membuat Revisi](https://www.petanikode.com/git-
commit/)
+- [Tutorial Git 04 - Melihat Catatan Log Revisi
Git](https://www.petanikode.com/git-log/)
+- [Tutorial Git 05 - Melihat Perbandingan Revisi
Git](https://www.petanikode.com/git-diff/)
+- [Tutorial Git 06 - Membatalkan Revisi
Git](https://www.petanikode.com/git-membatalkan-revisi/)
+- [Tutorial Git 07 - Percabangan](https://www.petanikode.com/git-branch/)
+- [Tutorial Git 08 - Perbedaan Git Checkout, Git Reset, dan Git
Revert](https://www.petanikode.com/git-checkout-reset-revert/)
+- Tutorial Git 09 - Menulis Ulang Sejarah
+- [Tutorial Git 10 - Bekerja dengan Remote
Repositori](https://www.petanikode.com/git-remote/)
+- Tutorial Git 11 - Git Tag
+- ...
Lalu sekarang bagaimana cara kita menggabungkan commit dari repository remote dengan
lokal?
Gunakan perintah git merge.
git merge master github/master
Setelah itu coba ketik ls dan git log lagi…
Kita sudah berhasil menggabungkan revisi dari remote dan lokal.
Mengambil Revisi dengan git pull
Lakukan hal yang sama seperti tadi.
Kali ini kita akan membuat file baru bernama register.html melalui Github.
Berikan nama file dengan register.html dan isi dengan apa saja.
Simpan revisi dan tambahkan persan commit seperti ini.
Sekarang ada perubahan baru di repository remote dan kita akan mengambilnya dengan
perintah git pull.
Silahkan buka repository lokal dan ketik perintah berikut:
git pull github master
Maka semua revisi akan diambil dan langsung digabungkan (merge).
Clone Remote Repository
Clone repository bisa kita bilang seperti copy repository dari remote ke lokal.
Perintah untuk melakukan clone adalah git clone.
git clone https://github.com/petanikode/belajar-git.git [nama dir]
Keterangan:
 https://... adalah URL repositoryremote,kitajugabisamenggunakanSSH.
 [nama dir] (opsional) adalahnamadirektoryyangakandibuat.Jikakitatidakberikan
nama direktori,makaakanotomatismenggunakan namarepository.
Mari kita coba…
Sekarang saya akan pindah ke Desktop.
cd ~/Desktop
Setelah itu melakukan clone di sana.
git clone git@github.com:petanikode/belajar-git.git
Maka akan ada direktori baru di sana.
FYI: Saat kalianclone sebuahrepositorydari Github,namaremote origin akandiberikansecara
otomatis
Apa Perbedaan git pull dengan git fetch?
Sebelum menjawab pertanyaan “kapan waktu yang tepat menggunakan git pull dan git
fetch?” kita bahas dulu perbedaanya.
Perintah git pull dan git fetch fungsinya sama. Yaitu mengambil commit terbaru dari
remote repository.
Fungsi perintahgitpull dangitfecth
Tapi ada perbedaanya:
 Perintah git pull akan mengambil committerbarulaluotomatismenggabungkan (merge)
denganbranch yangaktif.
 Sedangkan git fetch akan mengambil commitsaja.Perintah git fetch tidakakan
langsungmelakukan merge.
Cara Menggunakan git pull dan git fetch
Perintah git pull dan git fetch dapat kita gunakan seperti ini:
git pull origin master
git fetch origin master
Artinya kita akan mengambil commit dari branch master pada repository remote. origin
adalah nama remote-nya.
Untuk penjelasan yang lebih detail, kita bisa membaca di dokumentasi dengan mengetik
perintah git pull --help atau git fetch --help.
Gampang kan?
Kapan Waktu yang Tepat Menggunakan git pull dan git
fetch?
Apabila kita sudah melakukan commit di repository lokal, maka yang kita gunakan adalah
git fetch.
MenggunakanGitFetch
Kenapa menggunakan git fetch?
Karena untuk mencegah terjadinya bentrok.
Perintah git fetch akan mengambil commit terbaru dan menyimpannya di branch
origin/master.
Sedangkan apabila kita tidak pernah melakukan apa-apa di lokal repository, kita bisa
menggunakan git pull.
MenggunakanGitFetch
Perintah git pull akan mengambil commit terbaru ke branch origin/master dan langsung
menggabungkannya dengan branch master (lokal).
Studi Kasus Penggunaan git pull dan git fetch
Untuk mencoba penggunaan git pull dan git fetch kita akan menggunakan repository
belajar-git yang sudah dibuat di Github.
Repositori di Github
Saat ini sudah terdapat 14 kontributor di dalam repositori tersebut. Sedangkan pada repositori
lokal, saya belum melakukan apa pun.
Ini perbedaan commit repo lokal dengan remote:
Perbedaancommitdi reporemote denganlokal
Pada repository remote sudah terjadi 48 commit, sedangkan pada lokal hanya 10 saja.
Sekarang saya akan melakukan sebuah commit di repository lokal. Saya akan mengubah file
README.md menjadi seperti ini:
Jadi sekarang di repositori lokal ada 11 commit.
Lalu perintah yang mana yang harus kita gunakan untuk mengambil 48 commit di Github?
Tentu saja kita akan menggunakan git fetch, karena saya sudah melakukan perubahan di
repo lokal.
git fetch origin master
Hasil fetch akan disimpan dalam branch origin/master.
Kita bisa masuk ke branch origin/master dengan perintah git checkout:
git checkout origin/master
Lalu kita bisa lihat commit apa saja yang ada di sana dengan git log:
Ada dua branch dalam log tersebut:
1. master adalah branchmasterdi lokal
2. origin/master adalah branchmaster di remote yangsudahkitafetch.
Apabila kita sudah yakin, kita bisa menggabungkan (merge) dua branch tersebut.
Caranya:
# pindah dulu ke branch master (lokal)
git checkout master
# merge branch
git merge master origin/master
Menggabungkanbranchmasterdenganorigin/master
Berhasil …
Coba lihat hasilnya dengan git log:
Lalu Bagaimana Penggunaan Git Pull?
Perintah git pull digunakan saat kita tidak pernah melakukan commit apapun di repo lokal.
Cara kerja git pull:
1. Ambil semuacommitdari reporemote
2. Gabungkanbranch master(lokal) denganorigin/master(remote)
3. Selesai
Untuk mencoba git pull, saya akan mengubah file README.md dari Github.
Artinya sekarang di repositori remote (Github) ada 1 commit baru.
Bagaimana cara mengambilnya dengan git pull?
Caranya:
Gunakan perintah ini.
git pull origin master
Maka semua commit terbaru dari branch origin/master di Github akan diambil ke lokal
dan langsung digabungkan dengan branch master.
Mengunakanperintahgitpull
Mudah bukan…
SUMBER : https://www.petanikode.com

Tutorial git by sel

  • 1.
    TUTORIAL GIT BYSEL Cara Install Git di Windows 1. Instalasi Git di Windows memang tidak seperti di Linux yang ketik perintah langsung terinstal. 2. Kita harus men-download dulu, kemudian melakukan ritual next>next>finish. 3. Tapi dalam ritual tersebut, ada pilihan yang harus diperhatikan agar perintah git dapat dikenali di CMD. Download Git Silahkan buka website resminya Git (git-scm.com). Kemudian unduh Git sesuai dengan arsitektur komputer kita. Kalau menggunakan 64bit, unduh yang 64bit. Begitu juga kalau menggunakan 32bit. Langkah-langkah Install Git di Windows Baiklah, mari kita mulai ritual instalnya. Silahkan klik 2x file instaler Git yang sudah diunduh. Maka akan muncul infomasi lisensi Git, klik Next > untuk melanjutkan.
  • 2.
    Selanjutnya menentukan lokasiinstalasi. Biarkan saja apa adanya, kemudian klik Next >. Selanjutnya pemilihan komoponen, biarkan saja seperti ini kemudian klik Next >. Selanjutnya pemlilihan direktori start menu, klik Next >.
  • 3.
    Selanjutnya pengaturan PATHEnvironment. Pilih yang tengah agar perintah git dapat di kenali di Command Prompt (CMD). Setelah itu klik Next >. Selanjutnya konversi line ending. Biarkan saja seperti ini, kemudian klik Next >.
  • 4.
    Selanjutnya pemilihan emulatorterminal. Pilih saja yang bawah, kemudian klik Next >. Selanjutnya pemilihan opsi ekstra. Klik saja Next >.
  • 5.
    Selanjutnya pemilihan opsiekspreimental, langsung saja klik Install untuk memaulai instalasi. Tunggu beberapa saat, instalasi sedang dilakukan.
  • 6.
    Setelah selesai, kitabisa langsung klik Finish. Selamat, Git sudah terinstal di Windows. Untuk mencobanya, silahkan buka CMD atau PowerShell, kemudian ketik perintah git --version.
  • 7.
    3. Konfigurasi Awalyang Harus Dilakukan Ada beberapa konfigurasi yang harus dupersiapakan sebelum mulai menggunakan Git, seperti name dan email. Silahkan lakukan konfigurasi dengan perintah berikut ini. git config --global user.name "NamaUser" git config --global user.email contoh@gmail.com Kemudian periksa konfigurasinya dengan perintah: git config --list Apabila berhasil tampil seperti gambar berikut ini, berarti konfigurasi berhasil. Konfigurasi core.editor bersifat opsional. Sedangkan name dan email wajib. Jika kamu memiliki akun Github, Gitlab, Bitbucket atau yang lainnya…maka username dan email harus mengikuti akun tersebut agar mudah diintegrasikan. Membuat Repository pada local storage
  • 8.
    Simpan Perubahan Revisidengan Git Commit Pada bagian sebelumnya kita sudah membuat repositori kosong. Belum ada apa-apa di sana. Sekarang coba tambahkan sebuah file baru. Sebagai contoh, saya akan menambahkan tiga file HTML kosong. Masuk ke drive dimana htdocs/lokasi folder proyekweb yang kita buat berada
  • 9.
    Setalah masuk kefolder dimana projek didimpan, coba ketik perintah git status untuk melihat status repositorinya. Berdasarkan keterangan di atas, saat ini kita berada cabang (branch) master dan ada tiga file yang belum ditambahkan ke Git. Tiga Kelompok Kondisi File dalam Git Sebelum kita membuat revisi, kita akan berkenalan dulu dengan tiga kondisi file dalam Git. 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.
  • 10.
    Jika semua filedirevisi maka perintanhnya 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. Setelah itu cek kemlai dengan perintah git status
  • 11.
    Membuat Revisi kedua Ceritanyaada 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 Mahasiswa UBSI sedang belajar Git</p> </body> </html> Setelah itu ketik lagi perintah git status. Terilhatdi sana,file index.html sudah dimodifikasi.Kondisinyaskarangberadadalam modified. Lakukancommit lagi seperti revisipertama.
  • 12.
    Dengandemikian,revisi keduasudahdisipanolehGit.Mungkinandabelumtahumaksuddari argumen-m, argumentersebutuntukmenambahkanpesansetiapmenyimpanrevisi. MelihatCatatan Log Revisi Melihat Perbandingan Revisi dengan Git Diff Ubah kode menjadi <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Belajar Git - Project 01</title> </head> <body> <p>Hello Semua, Saya Mahasiswa UBSI sedang belajar </p> </body> </html> Kemudianketik
  • 13.
  • 14.
    Perintah untuk MembatalkanRevisi Sekarangkitaakan membatalkanperubahantersebut.Karenakitabelummelakukan stagedan commit,maka kitabisamenggnakanperintah: Perubahanyangbaru sajakita lakukanakandibatalkan.Kalautidakpercaya,cobasajaperiksafile yang sudahdirubahtadi atau cekdenganperintah git status. 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.
  • 15.
    Agar tidak terjadihal yang seperti ini, kita harus membuat cabang (branch) tersendiri. Misalnya, si A akan mengerjakan fitur X, maka dia harus membuat cabang sendiri. Si A akan bebas melakukan apapun di cabangnya tanpa menggangu cabang utama (master). Cara Membuat Branch baru Perintah untuk membuat cabang adalah git branch, kemudian diikuti dengan nama cabangnya. Untuk melihat cabang apa saja yang ada di repositori, gunakan perintah git branch. Tanda bintang (*) artinya cabang yang sedang aktif atau Kita sedang berada di sana.
  • 16.
    LATIHAN Pada repositori, buatlahsebuah cabang baru. Dengan nama silahkan ketua kelompok menujuk anggotanya membuat fitur yang dibutuhkan dalam projek webnya Dibawah ini sebagai contoh Setelah itu, pindah ke cabang yang baru saja kita buat dengan perintah: Lalu tambahkan file sesuai kebutuhan masing-masing Sebagai contoh Kemudian ketik git status
  • 17.
    Kita sudah menambahkanfile login.html. Selanjutnya kita lakukan commit. Bagus! revisi kita pada cabang halaman_login sudah disimpan. Sekarang coba kembali ke cabang master. Apakah anda menemukan file login.html? Pasti tidak! Sekarang kembali lagi ke cabang halaman_login.
  • 18.
    Cek lagi, apakahsekarang file login.html sudah ada? 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. Setelah itu, barulah kita bisa menggabungkan dengan perintah git merge. Sekarang lihat, file login.html sudah ada di cabang master.
  • 19.
    Mengatasi Bentrok Bentrok biasanyaterjadi jika ada dua orang yang mengedit file yang sama. Kenapa bisa begitu, ‘kan mereka sudah punya cabang masing-masing? Bisa jadi, di cabang yang mereka kerjakan ada file yang sama dengan cabang lain. Kemudian, saat digabungkan terjadi bentrok. Mengatasi bentrok adalah tugas dari pemilik atau pengelola repostiri. Dia harus bertindak adil, kode mana yang harus diambil. Biasanya akan ada proses diskusi dulu dalam mengambil keputusan. Baiklah, 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
  • 20.
    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" Bagus! bentrokan antar ormas programmer sudah beres . Menghapus Cabang Cabang yang sudah mati atau tidak ada pengembangan lagi, sebaiknya dihapus.
  • 21.
    Agar repositori kitabersih dan rapi. Cara menghapus cabang, gunakan perintah git branch dengan argumen -d dan diikuti dengan nama cabangnya. Contoh: git branch -d halaman_login
  • 22.
    Bekerja dengan RemoteRepositori Pada proyek pengembangan software yang melibatkan banyak orang (tim), kita tidak hanya akan menyimpan sendiri repository proyeknya. Semua tim yang terlibat dalam pengkodean (coding) akan menyimpan repository lokal di komputernya masing-masing. Setelah itu, akan dilakukan penggabungan ke repository inti atau remote. Biasanya akan ada repository pusat atau untuk menyimpan source code yang sudah digabungkan (merge) dari beberapa orang. Di mana nyimpan repository remote-nya? Bisa di server kantor atau bisa juga menggunakan layanan seperti Github, Gitlab, Bitbucket, dll. Github adalah layanan yang paling populer untuk menyimpan (hosting) repository secara remote. Banyak proyek open source tersimpan di sana. Kita akan menggunakan Github pada tutorial ini, pastikan kamu sudah memiliki akun Github. Membuat Repository di Github
  • 23.
    Silahkan buka Github,kemudian buat sebuah repository dengan nama belajar-git seperti berikut ini. Maka sekarang kita punya repository kosong di Github.
  • 24.
    Jangan diapa-apakan dulu. Silahkanbuka kembali repository lokal yang pernah kita buat, yaitu project-01. Kita akan upload ke Github. Menambahkan dan Menghapus Remote Sebelum kita bisa upload semua revisi yang ada di repository lokal, kita harus menambahkan remote-nya terlebih dahulu. Remote dapat kita tambahkan dengan perintah seperti ini: Ada dua pilihan URL remote yang bisa kita berikan: Melalui HTTPS: https://github.com/petanikode/belajar-git.git dan melalui SSH: git@github.com:petanikode/belajar-git.git Apa bedanya?
  • 25.
    Kalau kita menggunakanHTTPS, maka kita akan diminta password setiap kali melakukan push. Sedangkan yang menggunakan SSH, kita tidak akan diminta password. Namun, kita harus melakukan konfigurasi SSH Key terlebih dahulu. Saya lebih suka yang menggunakan SSH. Maka perintah untuk menambahkan remotenya akan menjadi seperti ini: git remote add github git@github.com:petanikode/belajar-git.git Setelah itu, silahkan ketik perintah git remote -v untuk melihat remote apa saja yang sudah ditambahkan. Bagus, sekarang kita sudah menambahkan remote di dalam repository lokal. Selanjutnya kita bisa melakukan push atau mengirim revisi ke repository remote (Github). Nah untuk menghapus dan mengubah nama remote dapat dilakukan dengan perintah berikut: Ubah nama remote: git remote rename github kantor Keterangan:  github adalah namalama  kantor adalah namabaru Hapus remote: git remote remove github keterangan:  github adalah namaremote yangakan dihapus. Mengirim Revisi ke Remote Repository
  • 26.
    Perintah yang kitagunakan untuk mengirim revisi ke repository remote adalah git push. git push github master Keterangan:  github adalah namaremote.  master adalah namacabang tujuan. Mari kita coba… Pastikan repository lokal kita sudah memiliki remote. Setelah itu lakukan beberpa revisi atau commit. git add . git commit -m "menambahkan beberapa revisi" Sebagai contoh, saya memiliki 5 catatan revisi. Maka tinggal kita kirim saja dengan perintah git push github master. Jika muncul seperti ini, artinya push sukses dilakukan.
  • 27.
    Sekarang lihat keGithub, pasti semuanya sudah ter-upload ke sana. Mudah bukan? Biar mantap, coba buat revisi lagi di file index.html. Misalnya perubahannya seperti ini:
  • 28.
    Lalu lakukan commitdan push. git add index.html git commit -m "mengubah judul dan teks di body" git push github master Jika berhasil, maka akan tampil seperti ini. Periksa kembali repository di Github dan perhatikanlah perubahanya.
  • 29.
    Jika ktia klikcommit terakhir, maka kita akan dibawa ke git diff-nya Github. Di sana kita bisa melihat perubahan apa saya yang dilakukan pada commit tersebut. Mengambil Revisi dari Remote Repository Saat kita bekerja dengan repository yang memiliki banyak kontributor, kita seharusnya mengambil dulu revisi terbaru dari repository inti agar tidak bentrok. Misalnya begini. Pada repository remote ada kontributor lain yang sudah menambahkan dan merubah sesuatu di sana.
  • 30.
    Maka kita harusmengambil perubahan tersebut, agar repository lokal kita tetap ter-update atau sama persis seperti repository remote. Ada dua perintah untuk mengambil revisi dari repository remote: 1. git fetch [nama remote] [nama cabang] 2. git pull [nama remote] [nama cabang] Apa perbedaanya? Perintah git fetch hanya akan mengambil revisi (commit) saja dan tidak langsung melakukan penggabungan (merge) terhadap repository lokal. Sedangkan git pull akan mengambil revisi (commit) dan langsung melakukan penggabungan (merge) terhadap repository lokal. Terus kita harus pakai yang mana? Tergantung dari situasi dan kondisi. Bila kita sudah membuat perubahan di repository lokal, maka sebaiknya menggunakan git fetch agar perubahan yang kita lakukan tidak hilang. Namun, bila kita tidak pernah melakukan perubahan apapun dan ingin mengambil versi terakhir dari repository remote, maka gunakanlah git pull. Mengambil Revisi dengan git fetch Baiklah, sekarang mari kita coba praktekkan. Silahkan buka github, dan tambahkan file README.md melalui Github.
  • 31.
    Klik tombol addREADME. Setelah itu, isilah file RAEDME.md dengan apapun yang kamu inginkan. Sebagai contoh, saya mengisinya seperti ini: Setelah selesai, simpan perubahan dengan melakukan commit langsung dari Github.
  • 32.
    Pesan commit bersifatopsional, boleh di isi boleh tidak. Karena Github akan membuatkannya secara otomatis. Sekarang ada perubahan baru di repository remote dan kita akan mengambil perubahan tersebut. Mari kita lakukan dengan perintah git fetch. Revisi sudah diambil, tapi belum ada file README.md di dalam repository lokal. Kenapa bisa begitu? Ya, balik lagi dari pengertian git fetch. Dia hanya bertugas mengambil revisi saja dan tidak langsung menggabungkannya dengan repository lokal. Coba kita cek dengan git log.
  • 33.
    Pada gambar diatas terlihat perbedaan log antara repository lokal dengan repository remote. Bila ingin mengecek apa saja perbedaannya, coba gunakan perintah git diff. git diff master github/master Keterangan:  master adalah cabangmaster di repositorylokal.  github/master adalah cabangmaster di repositoryremote. Hasil outputnya kira-kira akan seperti ini: diff --git a/README.md b/README.md new file mode 100644 index 0000000..1174eb2 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# belajar-git + +Repository ini adalah repository untuk belajar Git. Silahkan baca materi tentang [git remote di Petani Kode](https://www.petanikode.com/git-remote). + +Atau mulai belajar Git dari awal: + +- [Tutorial Git 01 - Instalasi Git dan Perisiapan Awal](https://www.petanikode.com/git-install/) +- [Tutorial Git 02 - Membuat Repositori Git](https://www.petanikode.com/git-init/) +- [Tutorial Git 03 - Membuat Revisi](https://www.petanikode.com/git- commit/) +- [Tutorial Git 04 - Melihat Catatan Log Revisi Git](https://www.petanikode.com/git-log/)
  • 34.
    +- [Tutorial Git05 - Melihat Perbandingan Revisi Git](https://www.petanikode.com/git-diff/) +- [Tutorial Git 06 - Membatalkan Revisi Git](https://www.petanikode.com/git-membatalkan-revisi/) +- [Tutorial Git 07 - Percabangan](https://www.petanikode.com/git-branch/) +- [Tutorial Git 08 - Perbedaan Git Checkout, Git Reset, dan Git Revert](https://www.petanikode.com/git-checkout-reset-revert/) +- Tutorial Git 09 - Menulis Ulang Sejarah +- [Tutorial Git 10 - Bekerja dengan Remote Repositori](https://www.petanikode.com/git-remote/) +- Tutorial Git 11 - Git Tag +- ... Lalu sekarang bagaimana cara kita menggabungkan commit dari repository remote dengan lokal? Gunakan perintah git merge. git merge master github/master Setelah itu coba ketik ls dan git log lagi… Kita sudah berhasil menggabungkan revisi dari remote dan lokal. Mengambil Revisi dengan git pull Lakukan hal yang sama seperti tadi. Kali ini kita akan membuat file baru bernama register.html melalui Github.
  • 35.
    Berikan nama filedengan register.html dan isi dengan apa saja. Simpan revisi dan tambahkan persan commit seperti ini.
  • 36.
    Sekarang ada perubahanbaru di repository remote dan kita akan mengambilnya dengan perintah git pull. Silahkan buka repository lokal dan ketik perintah berikut: git pull github master Maka semua revisi akan diambil dan langsung digabungkan (merge). Clone Remote Repository Clone repository bisa kita bilang seperti copy repository dari remote ke lokal. Perintah untuk melakukan clone adalah git clone.
  • 37.
    git clone https://github.com/petanikode/belajar-git.git[nama dir] Keterangan:  https://... adalah URL repositoryremote,kitajugabisamenggunakanSSH.  [nama dir] (opsional) adalahnamadirektoryyangakandibuat.Jikakitatidakberikan nama direktori,makaakanotomatismenggunakan namarepository. Mari kita coba… Sekarang saya akan pindah ke Desktop. cd ~/Desktop Setelah itu melakukan clone di sana. git clone git@github.com:petanikode/belajar-git.git Maka akan ada direktori baru di sana. FYI: Saat kalianclone sebuahrepositorydari Github,namaremote origin akandiberikansecara otomatis
  • 38.
    Apa Perbedaan gitpull dengan git fetch? Sebelum menjawab pertanyaan “kapan waktu yang tepat menggunakan git pull dan git fetch?” kita bahas dulu perbedaanya. Perintah git pull dan git fetch fungsinya sama. Yaitu mengambil commit terbaru dari remote repository. Fungsi perintahgitpull dangitfecth Tapi ada perbedaanya:  Perintah git pull akan mengambil committerbarulaluotomatismenggabungkan (merge) denganbranch yangaktif.  Sedangkan git fetch akan mengambil commitsaja.Perintah git fetch tidakakan langsungmelakukan merge. Cara Menggunakan git pull dan git fetch Perintah git pull dan git fetch dapat kita gunakan seperti ini: git pull origin master git fetch origin master Artinya kita akan mengambil commit dari branch master pada repository remote. origin adalah nama remote-nya. Untuk penjelasan yang lebih detail, kita bisa membaca di dokumentasi dengan mengetik perintah git pull --help atau git fetch --help.
  • 39.
    Gampang kan? Kapan Waktuyang Tepat Menggunakan git pull dan git fetch? Apabila kita sudah melakukan commit di repository lokal, maka yang kita gunakan adalah git fetch. MenggunakanGitFetch
  • 40.
    Kenapa menggunakan gitfetch? Karena untuk mencegah terjadinya bentrok. Perintah git fetch akan mengambil commit terbaru dan menyimpannya di branch origin/master. Sedangkan apabila kita tidak pernah melakukan apa-apa di lokal repository, kita bisa menggunakan git pull. MenggunakanGitFetch Perintah git pull akan mengambil commit terbaru ke branch origin/master dan langsung menggabungkannya dengan branch master (lokal). Studi Kasus Penggunaan git pull dan git fetch Untuk mencoba penggunaan git pull dan git fetch kita akan menggunakan repository belajar-git yang sudah dibuat di Github.
  • 41.
    Repositori di Github Saatini sudah terdapat 14 kontributor di dalam repositori tersebut. Sedangkan pada repositori lokal, saya belum melakukan apa pun. Ini perbedaan commit repo lokal dengan remote: Perbedaancommitdi reporemote denganlokal Pada repository remote sudah terjadi 48 commit, sedangkan pada lokal hanya 10 saja. Sekarang saya akan melakukan sebuah commit di repository lokal. Saya akan mengubah file README.md menjadi seperti ini:
  • 42.
    Jadi sekarang direpositori lokal ada 11 commit. Lalu perintah yang mana yang harus kita gunakan untuk mengambil 48 commit di Github? Tentu saja kita akan menggunakan git fetch, karena saya sudah melakukan perubahan di repo lokal. git fetch origin master Hasil fetch akan disimpan dalam branch origin/master.
  • 43.
    Kita bisa masukke branch origin/master dengan perintah git checkout: git checkout origin/master Lalu kita bisa lihat commit apa saja yang ada di sana dengan git log:
  • 44.
    Ada dua branchdalam log tersebut: 1. master adalah branchmasterdi lokal 2. origin/master adalah branchmaster di remote yangsudahkitafetch. Apabila kita sudah yakin, kita bisa menggabungkan (merge) dua branch tersebut. Caranya: # pindah dulu ke branch master (lokal) git checkout master # merge branch git merge master origin/master Menggabungkanbranchmasterdenganorigin/master Berhasil … Coba lihat hasilnya dengan git log:
  • 45.
    Lalu Bagaimana PenggunaanGit Pull? Perintah git pull digunakan saat kita tidak pernah melakukan commit apapun di repo lokal. Cara kerja git pull: 1. Ambil semuacommitdari reporemote 2. Gabungkanbranch master(lokal) denganorigin/master(remote) 3. Selesai Untuk mencoba git pull, saya akan mengubah file README.md dari Github.
  • 46.
    Artinya sekarang direpositori remote (Github) ada 1 commit baru. Bagaimana cara mengambilnya dengan git pull? Caranya: Gunakan perintah ini. git pull origin master Maka semua commit terbaru dari branch origin/master di Github akan diambil ke lokal dan langsung digabungkan dengan branch master. Mengunakanperintahgitpull
  • 47.
    Mudah bukan… SUMBER :https://www.petanikode.com