Skip to main content

Command Palette

Search for a command to run...

Mahasiswa Ngawur Pake Github

Keresahan saya sebagai pengajar selama ngajar mahasiswa pake github

Updated
10 min read
Mahasiswa Ngawur 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.

3 Tricks to Perform Google Drive Version Control in 2023

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.md

  • git 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 dipush

  • git 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:

Using Git Bash with the Windows Terminal | by Sascha Corti | Mediumsrc

Nah, belajarlah untuk menggunakan perintah sederhana command line seperti:

  • cd namadirectory untuk berpindah ke directory yang dituju

  • mkdir namadirectory untuk 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.

💡
Ohiya, kalau kalian pake Visual Studio Code atau kalian pake Android Studio, tinggal klik terminal aja, langsung dibukain tuh directory projek kalian tanpa perlu ribet-ribet cara di atas.

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>
💡
inget, ganti <branch> dengan branch kalian, misalnya master, atau main.

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:

  1. Transparansi

  2. Fokus membagi pekerjaan

  3. 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 master terlebih 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-x yang diturunkan dari branch master.

  • Andi membuat branch baru, namanya fitur-y yang 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 master lalu memasukkan perintah berikut pada terminal:

      git checkout master
      git fetch --all      
      git merge fitur-x
      git merge fitur-y
      git push origin master
    

    Explanation

    • git checkout master
      Pindah ke branch master

    • git fetch --all
      Mengecek perubahan dari semua branch, harus dilakukan supaya dapat perubahan terbaru yang dikerjakan teman kita

    • git merge fitur-x
      Ini perintah untuk ngegabungin kode dari branch fitur-x

    • git merge fitur-y
      Ini perintah untuk ngegabungin kode dari branch fitur-y

    • git push origin master
      Ini perintah untuk upload kode yang sudah digabung ke branch master

  • 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 melakukan git pull sebelum 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 melakukan git 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.