Mahasiswa Ngawur Pake Github
Keresahan saya sebagai pengajar selama ngajar mahasiswa pake github

Selama ngajar sejak 2019, Github udah jadi salah satu tools yang saya kenalkan ke mahasiswa. Alasannya sederhana, selain mempermudah tracking, Github juga membantu mahasiswa menjaga kode mereka agar tidak hilang dengan mudah.
Kenapa menjaga itu penting? Gak sedikit saya denger kasus:
"pak laptop saya dicuri 😭"
"pak laptop saya ketumpahan air 🥺"
"pak harddisk saya corrupt, data pada ilang karena harus di-format😨"
Pertanyaan gue pasti yang keluar cuma satu:
"Datanya udah dibackup ke cloud kah?"
Jawaban pada umumnya udah pasti:
"Sayangnya belom pakk, gimana nih?" (bisa-bisanya nanya gimana nih ke gue atas kesalahan diri sendiri 🙃)
Dannn ya udah pasti ekspresi gue kaya:

First of all, gue ngerasa aneh sama mahasiswa yang nggak punya sense of preventing. If you were the first year of the campus life, ya oke, namanya juga transisi kan ya? But imagine kalo lu udah tahun kedua, ketiga, apalagi keempat pas skripsi.
Gue juga tau, siapa sih yang mau kehilangan laptop? Siapa sih yang mau tiba-tiba laptopnya kena air? Siapa sih yang mau laptopnya corrupt? Jawabannya, gak ada.
Tapi, gue bener-bener heran banget kalo anak yang katanya gen Z yang tidak ada keinginan untuk memanfaatkan fitur cloud yang makin hari makin gampang cara pakenya. Laptop dengan OS windows misalnya, pasti gampang banget, install aja aplikasi cloud sync baik dari one-drive maupun google drive tinggal klik-klik, then bisa langsung otomatis backup, baik keseluruhan maupun data yang kita mau aja.
Pada cerita kali ini, gue pribadi mau jelasin tentang Git yang mana platform yang dipake itu Github, dan kenapa sih masalah-masalah kammen (Common) yang terjadi selama gue ngajar.
GIT bukan buat gaya doang
Saya adalah karakter orang yang mendorong mahasiswa, suka gak suka, kamu pasti saya dorong kalau kamu mahasiswa saya. Dalam artian, dorongan yang baik supaya terbiasa pake git.
Git sendiri gampangnya adalah sebuah tools yang mana bisa membuat version history dari code yang kamu buat dan ubah, misalnya, kamu lagi bikin dokumen apalagi skripsi. Umumnya mahasiswa bakalan bikin kaya gini:
skripsi.docx
skripsi-revisi-jan13.docx
skripsi-revisi-jan31.docx
skripsi-revisi-final.docx
skripsi-revisi-bismillah-gak-lagi.docx
For the sake of jokes, ini lucu pake banget WKWKWK. But for the reality, it sucks, sampah kalo saya bilang. Why tho? Zaman sekarang makin canggih, even google drive aja sudah bisa mengenali version history.

Artinya kalau kamu masih menyimpan dengan cara seperti itu, yang salah itu mindsetmu. Harusnya kamu cukup simpan dengan nama yang sama, then upload ke tools yang membantu kamu manage versi tersebut.
Why? Sederhananya, simplicity. Simplicity does matter. Walaupun sih pasti ada counter dan excuse: Simple buat bapak tidak berarti simple untuk semua orang.
Ya ya, oke, tapi kalo laptopmu hilang, kebakar, meledug, kecebur, kena air se-ember, tanggung aja sendiri ya resikonya. Soalnya poin dari yang saya sampaikan adalah, biasakan backup apalagi dengan version history, supaya memudahkan kamu tau kapan terakhir kamu melakukan perubahan tanpa harus menggunakan nama-nama file yang beda. Kalau kamu tetep suka pake nama yang beda, that's not my problem, yang penting buatlah habbit mem-backup pekerjaan setelah selesai dikerjakan/dilanjutkan, titik.
Github adalah platformnya
Git adalah toolsnya, github adalah platformnya. Sama kaya palu adalah alatnya, dan kresbow adalah brand pembuatnya, jadi Github dan Git itu bukan hal yang sama.
Masalahnya adalah, banyak mahasiswa yang enggan menggunakan Github untuk nyimpen kodenya, bahkan tidak mau belajar cara menggunakannya.
Nanti giliran magang atau kerjaan yang mengharuskan pake git, baru grasak-grusuk, mental macam apa itu? 🥱
Padahal Git dan Github itu simple, ketika ngebuat repository aja langsung diajarin sama github itu sendiri.

Apa kelemahan yang sebenarnya terjadi pada mahasiswa? Yup, malas membaca.
Sejak saya kuliah dan mengenal github aja, saya udah tau instruksinya ketika Github bilang "or create a new repository on the command line". Well, gak sesulit itu untuk memahami teks sependek itu, even google translate juga bisa bantu kita. Kita hanya perlu memasukkan step by step dari apa yang udah ditulis sama Github. Even di kelas pun saya bilang "masukkan step by step ya apa yang ditulis disini".
As simple as that, kalau mau dicoba pasti bisa, apalagi kalau mau meluangkan waktu 1 jam buat nyobain. Apabila kita jabarin step-by-stepnya begini:
echo "# repo-belajar" >> README.md
Ini tuh kita nulis teks repo-belajar ke file namanya README.mdgit init
Ini perintah untuk membuat inisiasi repository git di projek kamu, kalau udah ada ya pasti error, dan gak perlu khawatir, namanya juga udah ada.git add README.md
Ini tuh sebenernya nambahin file namanya readme.md yang berformat markdown. Format ini yang dipake github untuk nampilin teks.git commit -m "First commit"
Artinya kita ngebuat pesan commit pertama dari file readme.md yang tadi kita buat dan kita tambahin sebelum dipushgit branch -M main
Artinya kita fokus ke branch namanya main. Kalau gak ada, dibuatin.git remote add origin https://github.com/perogeremmer/repo-belajar.git
Ini kita nambahin url yang punya alias namanya origin dengan URL yang ditulis disana. Inget karena ini alias, jadi bisa aja diganti yang lain, misalnya bejo, hudya, mantan.git push -u origin main
Artinya, kita upload kodenya ke github dengan pake branch saat ini yang ada di local kita ke url alias yang kita tadi kasih nama origin dan branch yang dituju adalah main.
Gue tau, ini ribet banget mungkin ya buat mahasiswa, makanya pas ngajar, gue sampein kalian cuma butuh sekian baris ketika pertama kali mau nambahin kode, yaitu:
git init
git add .
git commit -m "First commit"
git remote add origin <url-repo>
git push origin master
Kenapa gue pake master dan bukan main? Karena anak lama (cailah sombong bet) biasanya dikenalinnya master sama github, bukan main. Baru-baru ini aja github maunya pake main.
As simple as that kalian udah bisa ngepush kode ke github dan bagian git add . artinya adalah kalian menambahkan seluruh kode yang ada di repository kalian.
Pak ini gimana sih caranya? Saya masih bingung ngetik ini dimana
Gampangnya, ini tuh sebenernya perintah yang kita ketikkan di CMD (Command Line) atau Powershell kalau di Windows. Kalau kalian sudah install git, kalian juga bisa cari aplikasi namanya Git Bash, bentukannya begini contohnya:

Nah, belajarlah untuk menggunakan perintah sederhana command line seperti:
cd namadirectoryuntuk berpindah ke directory yang ditujumkdir namadirectoryuntuk membuat folder baru
Biasanya, kalau kita pake di windows dan kalian berada di C, tinggal ketik aja misalnya:
C:\xampp\htdocs
Langsung tuh pindah ke directory htdocs, pindah ke folder kalian, misalnya nama projeknya inventory. Yaudah tinggal ketik di terminal kalian cd inventory . Udah deh kalian masuk ke folder inventory di dalam htdocs.
Hal kaya gini gakbisa belajar sekali doang, harus nyoba berkali-kali. Sifat jelek mahasiswa adalah ngerasa mampu nyoba sekali doang, inget brow elo tuh bukan einstein. Even einstein aja pasti nyobain berkali-kali.
Ngupdate code
Nah ketika kalian udah berhasil upload ke git pertama kali, kalian pasti ada perubahan dong, karena progressnya kalian kerjain, kecuali kalian mahasiswa mageran, lol.
Sekarang lakuin hal yang sama, buka terminal kalian di git bash atau pake VSCode/Android Studio terus ketikkan aja step-by-step tiga perintah di bawah ini:
git add .
git commit -m "pesan kalian, misalnya: Update code in User"
git push origin <branch>
Gampang kan? Gampang banget, kalo masih gak bisa juga bukan kamunya bego, kamunya kaga mau nyoba berkali-kali.
Github itu buat kolaborasi
Yap, sesuai judulnya, jelas bahwa github itu buat kolaborasi, artinya akan lebih mantap kalau kita pake buat bareng-bareng misalnya ngerjain tugas kelompok kodingan. Ada beberapa alasan:
Transparansi
Fokus membagi pekerjaan
Sinkronisasi kerjaan
Kebiasaan mahasiswa adalah suka bagiin kerjaannya lewat email/chat, padahal itu gak baik sama sekali. Selain rentan hilang atau corrupt, itu akan susah trackingnya, kode mana yang benar, kapan itu diganti dan hal lainnya. Nah github ada tuh buat mencegah itu.
Transparansi
Bagi saya, github itu wajib dipake buat mahasiswa saya, alasannya mudah, transparansi, saya paling gak suka kalo ada mahasiswa benalu yang numpang nama di kerjaan kelompok. Dengan adanya github, gak bisa tuh mahasiswa pura-pura ngerjain, cukup lihat apa yang dicommit sama username mahasiswa tersebut, dan dosen bisa lihat secara gamblang dia ngapain aja.
Solusi bagus untuk penumpang gelap di kelompok, bukan? 🤭🤫
Fokus membagi pekerjaan
Karena github ada fitur branch atau cabang, kamu bisa ngerjain di dua cabang yang beda, misalnya:
Si A ngerjain di branch fitur-x
Si B ngerjain di branch fitur-y
Ketika si A sama si B mau gabungin semuanya, tinggal gabungin antara cabang fitur-x dan fitur-y ke master. Viola, kalian bisa fokus tanpa terganggu kerjaan satu sama lain.
Sinkronisasi Kerjaan
Kalau A sudah selesai ngerjain kerjaan, si B bisa langsung ngambil kode A dengan cara git pull, tujuannya ya jelas, biar gak ada tunggu-tungguan.
Gimana cara kolaborasi dua orang?
Branch yang Sama
Gampil banget, perhatiin nih step-by-step kasusnya gini:
Hudya membuat repository namanya belajar-php, Andi merupakan teman satu kelompok Hudya.
Andi di-invite oleh Hudya, menunya ada di tab settings - collaborators.
Andi membuka email dan menekan konfirmasi, lalu join ke projek belajar-php buatan Hudya.
Hudya melakukan push kode pertamanya, ke branch
master.Andi melakukan clone terhadap repository hudya, karena andi belom pernah punya di folder localnya.
Ketika hudya selesai mengerjakan, hudya melakukan push terhadap branchnya:
git push origin master.Andi mau melanjutkan kodenya, andi melakukan perintah
git pull origin masterterlebih dahulu agar mendapatkan kode yang sudah di-push oleh Hudya.Andi mengerjakan kodenya dan push terhadap branchnya:
git push origin master.💡Biasakan untuk menjalankan perintah git pull origin master apabila mau mengerjakan maupun sesaat sebelum melakukan push.
Branch yang berbeda
Gampil banget, perhatiin nih step-by-step kasusnya gini:
Hudya membuat repository namanya belajar-php, Andi merupakan teman satu kelompok Hudya.
Andi di-invite oleh Hudya, menunya ada di tab settings - collaborators.
Andi membuka email dan menekan konfirmasi, lalu join ke projek belajar-php buatan Hudya.
Hudya melakukan push kode pertamanya, ke branch
master.Andi melakukan clone terhadap repository hudya, karena andi belom pernah punya di folder localnya.
Hudya membuat branch baru, namanya
fitur-xyang diturunkan dari branch master.Andi membuat branch baru, namanya
fitur-yyang diturunkan dari branch master.Ketika hudya selesai mengerjakan, hudya melakukan push terhadap branchnya:
git push origin fitur-x.Sama juga dengan Andi, andi melakukan push terhadap branchnya:
git push origin fitur-y.Setelah Andi dan Hudya mengerjakan pada masing-masing branch, Hudya pindah ke branch
masterlalu memasukkan perintah berikut pada terminal:git checkout master git fetch --all git merge fitur-x git merge fitur-y git push origin masterExplanation
git checkout master
Pindah ke branch mastergit fetch --all
Mengecek perubahan dari semua branch, harus dilakukan supaya dapat perubahan terbaru yang dikerjakan teman kitagit merge fitur-x
Ini perintah untuk ngegabungin kode dari branchfitur-xgit merge fitur-y
Ini perintah untuk ngegabungin kode dari branchfitur-ygit push origin master
Ini perintah untuk upload kode yang sudah digabung ke branchmaster
Viola, Andi dan Hudya sudah selesai mengerjakan pekerjaan bersama berdua.
Tapi punya saya conflict pak, gimana?
Sederhananya, ada beberapa kemungkinan:
Kamu gak pisah branch seperti yang saya tulis di atas.
Kamu gak pull sebelum mengerjakan kode lanjut kamu, misal Hudya dan Andi sama-sama mengerjakan kode di branch
master, setelah Hudya melakukan push, Andi tidak melakukangit pullsebelum melanjutkan pekerjaannya. Hal ini dikarenakan versi commit andi tertinggal satu versi karena dicommit oleh Hudya.Kamu dan temanmu menyenggol file dan baris yang bertubrukan, misalnya Hudya dan Andi sama-sama melakukan edit terhadap file
User.php, andi mengganti baris 10-20, Hudya mengganti baris 15-18. Ketika Andi mencoba melakukangit pull, maka terjadi conflict karena ada dua versi yang bertubrukan baris kodenya. Solusinya? Rapihkan manual 😁
Udahlah sekian aja keresahan saya, nantinya saya ajarin cara kolaborasi dengan sistem branching yang lebih mantap ya, c ya.




