Transcript for:
Belajar Dasar GIT dan Kolaborasi

Selamat pagi semuanya, terima kasih sudah mengundang saya buat ngisi acara. Ini kebetulan screen saya juga saya live streaming ke YouTube saya, biar makin banyak orang juga yang nonton. Jadi sebenarnya hari ini kita akan bahas tentang GIT, tapi saya nggak nyiapin presentasi, terus terang. Jadi yang pengen kita lakukan hari ini lebih ke gimana caranya teman-teman nanti bisa belajar GIT. Jadi saya nggak akan semacam kuliah, ngasih tahu tentang GIT itu definisinya apa. kemudian komennya ada apa aja, saya nggak taruh itu di slide tapi nanti kita akan mulai dengan dokumen yang namanya git cheat sheet kira-kira kayak gitu, jadi mudah-mudahan kalau teman-teman mau langsung nyobain juga nggak masalah tapi kebanyakan nanti kita akan bermain dengan Terminal. Jadi saya sudah, saya sebenarnya nggak nyiapin flow-nya apa-apa. Kalau seandainya ada yang punya pertanyaan, kalau bisa langsung ditanyain aja. Jadi saya akan mulai dulu dengan perkenalan kali ya. Saya adalah Imre Nagi. Saya sekarang di... tim Gopay di Cloud Platform Engineer. Mungkin ada yang nyebutnya SRI, ada yang mungkin nyebutnya DevOps. Tapi sehari-hari tugas saya adalah membantu bagaimana caranya produk engineer yang ngedevelop aplikasi Gopay bisa ngedeliver fiturnya ke user. Jadi kira-kira kayak gitu. Nah, mungkin teman-teman ada yang belum tahu git itu sebenarnya apa. Jadi git itu simpelnya adalah version control. Version control itu maksudnya apa? Jadi biasanya gini, kalau seandainya kita punya codingan, dulu waktu zaman saya masih... kuliah, itu yang saya lakukan codingan TA saya, tugas akhir saya bikin di sebuah directory kemudian kalau sudah sampai fitur tertentu, saya kasih namanya V1, kemudian ketika sudah ada tambahan fitur untuk backup, saya bikin kita bikin V2 dan seterusnya. Nah itu sebenarnya kita ngebikin version tapi itu kan manual dan itu kalau seandainya ada apa-apa ya udah data kita hilang misalkan kena virus dan segala macam tapi harapannya dengan kita menggunakan git ini kita bisa ngasih message yang lebih clear untuk setiap versi yang kita buat kemudian yang lebih penting lagi datanya itu bisa kita simpan di cloud atau internet jadi kira-kira git itu kayak gitu jadi bayangkan teman-teman punya aplikasi versi 1, versi 2, versi 3 nah gimana cara nge-manage semua versi tadi asumsi saya semua di laptop teman-teman semua udah ada git udah ada ini Jadi kalau teman-teman ketik git doang, itu ada banyak comment. Ada git clone, git init, git add, mv, restore, dan segala macam. Ini salah satu cara yang bisa teman-teman pakai kalau pengen tahu comment-comment di git itu ada apa saja. Jadi ada banyak, ada clone, init, nanti kita akan coba comment-comment yang sering dipakai. Kalau seandainya ada yang punya pertanyaan, nanti saya minta tolong moderatornya langsung dikasih tahu saja atau di-intercept saja ketika presentasi. Terus habis itu, oke gimana caranya kalau mau gampang belajar git? Ada satu dokumen namanya git cheat sheet. Jadi git cheat sheet ini teman-teman tinggal search aja di internet, ada bahkan dibikin langsung oleh github. GitHub itu adalah nanti dimana kita akan menyimpan codingan kita. Jadi setelah teman-teman nanti kerja di lokal, teman-teman bisa simpan codingannya itu di GitHub namanya. Ada GitHub, ada GitLab, ada Bitbucket dan macam-macam. Tapi pagi ini kita akan coba nanti. nanti simpan nya ke Github. Jadi ini Gitsit, dibuka aja dan disini sebenarnya ada banyak comment. Jadi ada step instalasinya tapi harusnya kalau teman-teman pakai Windows atau Mac atau bahkan Ubuntu, GIT itu udah ke install otomatis setahu saya. Jadi ini ada setup, setup ini untuk apa nanti mungkin kita bisa lihat ini digunakan untuk apa. Kemudian ada comment nya, nah ini nih kita setup dulu ada commentnya. commentnya git init, ada git clone, ini untuk apa, nanti kita akan lihat. Kemudian ada stage dan snapshot, git status, git add, git reset, git div, dan macam-macam. Ada git commit, git commit ini yang akan selalu dipakai. Git add, git commit itu selalu dipakai. Kemudian nanti kita akan belajar tentang branching. Kalau boleh tahu nanti waktu presentasinya berapa lama ya kira-kira? Oke oke oke, 1 jam 30 menit ya. Harusnya sih cukup ya. Jadi ada banyak, nah dari mana kita mulai? Kita akan mulai dari setup dan init aja Jadi nanti teman-teman kalau udah di depannya ada git, teman-teman cukup ngelakuin ini Git config global username, nama teman-teman siapa, kalau saya Imre Nagi Kemudian git config global user.email, emailnya apa, jadi kayak gitu Nah kenapa ada global? Karena ini jadinya settingan global Karena nanti teman-teman bisa atur untuk masing-masing project, emailnya mau pakai yang mana, namanya mau pakai siapa Tapi kira-kira kayak gitu, jadi kita akan mulai dari setup ini dulu kali ya saya akan buka side to side mending biar kelihatan nah ini bisa digeser oke jadi saya akan clear dulu disini oke jadi git config ini Kalau kita lihat disini, kalau git config doang nanti muncul macam-macam. Jadi kita bisa lihat git config global. Jadi git config minmin global. Sorry, git config global, global-global, minmin, oh iya. Git config macam-macam lah. Nanti kita bisa lihat disini ada global, ada get. Tapi yang sekarang mau kita lakukan adalah git global username. Oh ini di atas, sorry. kok gak ada ya anyway gak masalah lah saya coba clear lagi, jadi kita bisa git config minmin global username nya user.name kayak gini ini buat nge set username nya ya misalkan imbrenagi kayak gini kita bisa set email juga tapi saya gak akan yaudah saya set aja deh biar keliatan user.email imbre.nagi212.html.com nah ini udah, jadi saya udah nge-set git config saya sekarang berarti saya bisa ngelakuin ini gak ya? oh gak ada, git config minminget user.name namanya imbre.nagi jadi ini sekarang saya udah set up git di lokal saya nah terus apa hubungannya? kenapa kita perlu set up dulu? jadi misalkan gini, teman-teman pengen bikin sebuah project website kemudian yang akan teman-teman lakukan teman-teman akan bikin sebuah directory misalkan nama directory nya itu adalah website DSC misalkan kayak gitu kemudian saya masuk ke website DSC by default ini repository nya itu belum ada git yang aktif nah makanya ketika kita baru memulai project biasanya kita akan melakukan namanya git init git init itu Nah, nggak masalah. Jadi, git init itu sebenarnya yang dilakukan adalah dia akan bikin... Dia akan bikin sebuah directory git di sini. Jadi, directory git itu nanti yang akan dipakai untuk menyimpan history-history atau data-data dari git, teman-teman. Nah, buat apa ini? Ya, biar nanti kita bisa mengaktivasi git di project yang kita lakukan. Jadi, kira-kira kayak gitu. Terus, habis itu... ada command git clone, git clone ini mungkin nanti kita akan coba tapi sekarang saya akan buka dulu project ini mana dia, kenapa tidak muncul, karena fullscreen nah sekarang saya sudah punya project tadi website DSC, disini kalau saya buka terminal disini kalau saya buka terminal ini sama disini dia nunjukin master, master ini maksudnya apa sih jadi kalau seandainya teman-teman baru mulai project pakai git itu ada namanya branch kita nanti akan bahas tentang branching tapi untuk sekarang kita akan coba bikin semua commit history kita di branch master dulu Branchmaster ini anggap aja branch utamanya lah Branch itu apa nanti akan kita bahas Tapi yang jelas kita sekarang belajar dulu Gimana caranya ngebikin commit Dan nambahin file dan segala macem Jadi untuk apa tujuannya kita bikin ini Kita bikin project Berarti teman-teman nanti akan bikin sebuah file Misalkan kita akan mulai dari readme Sekarang readme ini belum ada filenya, tapi teman-teman pengen masukin file ini ke git. Jadi ketika sudah jadi, filenya kosong, kita pengen simpan ke git. Kita bisa melihat git status namanya. Status ini akan menunjukkan kita tentang file-file apa aja yang ada tapi belum kesimpan. Gampangnya kayak gitu. Belum kesimpan. Nah, warnanya merah nih. ReadMD. Terus berarti kita bisa tahu bahwa ini belum ke stage nih istilahnya. Ke stage itu. Jadi untuk sekarang kita pakai istilahnya simpan dulu aja. Jadi ada file yang belum kesimpan. Namanya readme.md. Terus sekarang saya akan pakai comment githad. Jadi kalau seandainya saya balik lagi git status Git add itu dia akan masukin filenya itu ke tahapan stage Jadi sebelum kita nyimpen sebenarnya ada satu tahapan namanya stage Stage itu disini kalau kita pakai UI ini nanti kita bisa lihat ada stage change disini Stage change itu apa? Ya ada file yang mau kita simpan Tapi misalkan gini kalau saya nambahin perubahan disini kemudian saya akan git status lagi git status nah sekarang teman-teman lihat bahwa ada yang hijau dan ada yang merah ini kenapa? ini berarti dia bilang bahwa ada perubahan yang memang belum ke stage jadi disini ada new file readme.md disini ada file yang belum ke stage bedanya apa? kita bisa lihat disini Ini tadi filenya sebelumnya ini ya, kosong kemudian ada perubahan. Jadi dia ngasih tau bahwa file tadi yang kosong ketika di stage pertama kali, kemudian kita ubah terus kita bisa ngeliat perubahannya. Nah sekarang saya akan masukin lagi git add untuk menyimpan perubahan yang barusan. Nah dari sana teman-teman bisa lihat bahwa sekarang perubahannya itu udah ke stage. Jadi gak ada lagi kalau seandainya kita git status gak ada lagi yang merah. Jadi kira-kira gitu. Jadi kalau kita mau ngeyimpen itu istilahnya kita stage dulu. dulu baru nanti kita commit baru kodingan kita kesimpan terus habis itu dari sini kita bisa git setelah kita add jadi kalau kita mau pakai git kita harus add dulu kita stage dulu dengan comment git add tadi setelah itu baru nanti kita akan pakai comment git commit git commit ini kita bisa pakai git commit min m untuk ngasih message misalkan saya akan kasih tahu init readme misalkan kayak gitu ya init readme Nah sekarang kalau kita lihat kalau kita git status lagi dia udah kosong. Udah nggak ada lagi nothing to commit working tree clean. Dia bilang kayak gitu disini. Itu artinya yang changes yang kita tadi itu udah kesimpan. Terus gimana caranya kita bisa ngeliat changes apa yang udah kita lakukan. Ada command namanya git log. Ketika kita run git log disini dia akan kasih tau ada commit hash disini. Kemudian authornya siapa dan datenya kapan. Commit message-nya apa. Jadi kira-kira kayak gitu. Jadi disini ada hash. Hash ini apa sih? Ini adalah identifier dari setiap komitan kita. Maksudnya gimana? Jadi tadi saya udah bikin sebuah file namanya readme.md disini. Isinya ngaco. Kemudian saya pengen merubah. Kita akan merubah. Berarti yang akan saya lakukan saya akan kasih title. Misalkan disini website. DSC misalkan kayak gini ya saya bikin kayak gini kemudian ini kan yang benar kalau seandaikan saya status lagi saya bisa melihat bahwa ada yang modified readme.md nya sekarang modified nah kemudian saya akan git add lagi git add titik itu untuk masukin semua file yang ada di konteks saya sekarang yaitu di root folder nya kemudian setelah saya git add saya git status lagi saya bisa lihat bahwa dia sekarang udah ke stage untuk nge-save nya saya akan pakai comment git commit min-m fix value in readme file jadi disini kita bisa kasih message atau kayak deskripsi perubahan apa yang kita lakukan dengan file tersebut misalkan gitu Jadi ini, jadi sekarang teman-teman bisa lihat ada satu file change, ada dua insertion dan satu deletion. Jadi perubahan tadi ada sebelumnya ada satu line yang kita hapus, kemudian ada dua line baru yang kita tambahin, dan cuma ada satu file yang berubah. Nah, oke ya. Dari sini sebenarnya kita bisa ngelakuin git log lagi. Nah, kalau teman-teman lihat di sini, sekarang kita punya dua log. Ini log yang pertama. Dan sekarang... Setelah saya commit lagi, saya punya lock yang kedua. Jadi saya bisa lihat sekarang ada dua commit. Jadi dengan cara seperti ini, saya sudah punya rekaman histori dari perubahan saya. Terus sebenarnya kalau ada yang nanya nih, Mas, untuk apa si commit ini disimpan? Nah, ini pentingnya version control. Kalau tadi di depan saya bilang bahwa, Oh, version control. itu supaya nanti saya punya backup codingan saya yang sebelumnya. Kira-kira kayak gitu. Terus, gimana caranya saya balik ke codingan saya yang sebelumnya? Ada lagi komennya. Komennya adalah git checkout. Jadi git checkout itu apa? Itu untuk pindah dari satu. satu titik ke titik lain Kenapa saya pakai titik karena ini saya tunjukin sebuah project open-source saya disini ini adalah project open-source gopayment teman-teman bisa lihat di GitHub saya dari semua titik-titik ini sebenarnya adalah commit sama kan kayak tadi disini kita nanti bisa lihat misalnya apa kemudian file apa aja yang berubah disini file-nya yang berubah banyak untuk setiap perubahan file nanti kita bisa lihat nih divnya apa misalkan di file yang mana? nah disini nih file ini, invoice slash line item ini, ada yang merah dan ada yang hijau, nah maksudnya apa? itu dia ngasih tau bahwa line ini sebelumnya kayak gini, tapi setelah dirubah, jadinya kayak gini merah itu adalah yang dihapus hijau itu adalah yang baru bukan artinya dihapus ya, yang berubah mungkin bisa jadi dihapus atau bisa jadi berubah kalau diatasnya itu merah, dibawahnya hijau berarti itu berubah, tapi kalau misalkan ada yang dihapus apa ya contohnya ya... ada nggak ya? misalkan ini ini hijau semua kan ini hijau semua berarti saya bisa lihat bahwa ini adalah codingan yang baru dimasukin ditambahin kalau saya lihat aduh loading lagi coba saya pengen lihat yang saya hapus deh ada nggak ya? ntar oh di sini sini banyak saya hapus Nah ini, jadi kalau di sini teman-teman bisa lihat bahwa ada file yang merah, nah itu artinya itu merah itu dihapus. Kalau nggak ada hijau di bawahnya, itu artinya file-nya itu kalau semuanya merah berarti file-nya dihapus. Ini ada tandanya kan, ini ada kuning, ada perubahan, ini plus yang hijau, ini ada tandanya adalah ada file baru. Jadi ini adalah versi UI-nya, kalau teman-teman nggak mau pakai versi terminal, teman-teman bisa... saya pakai versi UI, tapi kebanyakan orang lebih suka pakai versi terminal. Tapi kenapa saya pakai versi UI-nya Git ini? Supaya saya bisa lihat div-nya dengan lebih gampang. Sebenarnya bisa juga kalau kita mau melihat div-nya itu dengan terminal. Nanti saya kasih tahu. Tapi kira-kira seperti itulah kegunaan. nah balik lagi tadi ada titik-titik kan saya nyebut titik terus saya nyebut juga komen namanya git checkout git checkout itu untuk digunakan untuk pindah dari satu titik ke titik lain anggap ini titik atau kita nyebutnya commit lah pindah dari satu commit ke commit lain atau dari satu branch ke branch lain nanti kita akan sampai ke branch jadi dari sini saya bisa pindah ke sini, pindah ke sini dan seterusnya kita akan balik lagi ke project tadi sekarang saya punya dua commit ya teman-teman bisa lihat bahwa sekarang Bagaimana cara membuatkan file yang telah ditambahkan di staging area? Katakanlah saya salah mendapatkan file start kit app. Oke, pertanyaan bagus. Sebenarnya kita nanti akan ke sana, tapi saya jawab dulu. Saya akan coba sekarang tambahin sebuah line baru. Misalkan gitu ya. Halo. Nama saya adalah Imre. Misalkan kayak gitu. Sekarang saya akan git add. Otomatis kan ini udah masuk ke stage ya. Git status. Nah disini teman-teman bisa lihat nih. Change to be committed. Use git restore min min stage to unstage. Jadi dia udah ngasih tau langsung caranya gimana. Jadi kalau kita mau melakukan itu. Kita bisa lakukan kayak gini. Kemudian kita kasih tau nama filenya apa. Oke dengan cara seperti itu jadinya yang tadi udah kita stage disini itu nggak belum jadinya nggak ke stage saya coba lagi ya git add sekarang disini teman-teman lihat stage changes nya itu ada ini tapi karena saya mau batalin saya lakuin seperti ini Itu bisa juga. Itu caranya kalau kita mau nge-unstage semua file. Tapi misalkan gini. Disini saya ngelakuin perubahan. Saya tambah satu. Oke sorry. Disini saya tambah satu. Saya ubah satu line itu. Kemudian disini saya tambahin banyak hal. Nah sebenarnya kita bisa juga membuang perubahan di line-line tertentu. Saya nggak tahu di comment-nya kayak gimana. Saya nggak hafal. Tapi... kalau seandainya project ini saya buka disini di source 3 ini kita teman-teman jadi sekarang bisa lihat bahwa di sini di unstage ini misalkan ini saya stage ya saya klik lebih enak kan tinggal klik-klik ke stage nah disini ada yang merah ini dan kemudian ada perubahan saya bisa milih line mana yang mau saya discard caranya kayak gimana saya kayak gini saya block kemudian saya bilang stage Jadi kalau ini di-unstage, jadinya di sini yang berubah itu ya cuma beberapa line doang, nggak semuanya tadi. Ini yang saya unstage kan, sorry. Ya jadinya yang ke-stage itu cuma line ini, tapi line yang dua lagi itu nggak ke-stage, tapi tetap dianggap ada perubahan di sini. kira-kira kayak gitu jadi ada caranya bisa pakai git apa tadi namanya git restore atau kita bisa via UI mudah-mudahan menjawab ya saya akan balik lagi sedikit ke tadi git log tadi git log ini cara melihat log tapi kita bisa juga pakai git log min-min one line kalau pakai git log sorry kecepatannya Git log min-min one line ini artinya itu untuk nampilin lognya itu cuma satu baris doang. Jadi makanya muncul kayak gini. Nah disini commit ID-nya itu lebih pendek. Dan ini sama-sama bisa dipakai. Misalkan sekarang kita tadi ada di commit-an yang ini ya. Commit-an yang ini. Saya pengen balik ke commit-an yang pertama. Berarti saya tinggal ambil hash-nya. Saya copy. Kemudian ini saya hapus dulu aja. Gco.git checkout. Git stash. Nah sekarang saya balikin lagi. Sekarang ini kan komitan kedua kita tadi ya. Saya sekarang pengen balik ke komitan pertama. Caranya gimana? Saya akan pakai comment git checkout. Dan saya kasih commit hashnya. Dengan cara kayak gini, saya balik lagi ke komitan yang pertama. Jadi ini pentingnya kenapa kita pakai git, supaya kita nggak nyimpen codingan kita itu di folder terpisah. Kalau kita mau balik lagi ke yang paling awal tadi gimana? Kalau nggak salah git checkout master aja. Nah saya langsung balik lagi. Jadi ketika codingan kita udah di commit, yaudah semuanya akan kesimpen dan kita bisa bolak-balik sesuai kebutuhan. Kayak gitu. Oke, gitu ya. Yang di Youtube saya juga lumayan ada beberapa pertanyaan nih. Nanti kita coba lihat lah kalau ada waktu. Itu tadi yang bertanya dari mana? Itu yang bertanya dari DSC. Jadi ini lagi ada event bareng DSC. Oke, sip. Terus habis itu kita udah ke Git Comet. Sekarang kita akan balik lagi ke tadi apa namanya? Cheat sheet-nya. Cheat sheet-nya itu dari tadi kita udah nyobain Git status. Kita udah nyobain git add juga. Git add itu selain bisa git add titik, artinya masukin semuanya. Atau kita bisa pakai git add nama file atau path to file. Jadi misalkan kalau ada dua file, kita bisa milih mau masukin yang mana. Nanti kita cobain ketika kita demo yang lebih ribet. Terus ada juga git div. Git div ini sebenarnya tujuannya untuk melihat perbedaan dengan apa yang terkomit sebelumnya dengan apa yang kita lakukan. Jadi itu sama dengan yang ada di sini. Jadi misalkan... Disini saya lakuin perubahan lagi ya. SD. Kalau kita buka source tree. Sekarang kita bisa lihat div nya. Div nya itu adalah ini. Sebelumnya ini. Sekarang jadi ini. Tapi kalau kita pengen jalanin di terminal. Itu juga bisa. Get div. Sama persis. Value nya. Jadi merah. Kemudian ada hijau-hijau nya. Itu adalah tanda yang baru ditambahin. Jadi begitu. Terus habis itu kita sudah melihat git div, git div stage, ini untuk melihat apa yang sudah di stage tapi belum di commit. Kalau di UI tadi, kita melihatnya itu di bagian sini. Ini apa yang sudah di stage tapi belum di commit. Nah ini, ini sudah di stage kan, ada stage file tapi belum di commit. Kalau di commit nanti kita bikin commit message kemudian kita commit. Itu sama kayak tadi, git commit min m. Dan yang paling fundamental adalah git commit min-m ini. Jadi git commit min-m, descriptive message-nya apa. Ini kalau kita mau bikinnya kayak gini, langsung one-liner dan selesai. Jadi ini basic-nya dari git. Kemudian habis ini saya pengen bahas dulu tentang branch dan merge. Sebelum kita ngebahas tentang gimana caranya dengan git kita bisa berkolaborasi dengan orang-orang lain. Jadi tadi kita udah nyobain git log juga. Apalagi ya. Git check out juga sekilas Tapi nanti kita akan coba lagi Setelah ini selesai nanti kita akan coba git clone Jadi kira-kira kayak gitu Sekarang jam 9.27 Sekarang gini Kalau seandainya kita ngomongin git Git itu kan sebenarnya adalah tools Ketika kita punya tools Biasanya kita bisa setup sebuah workflow Browser saya mana ya Hop kalau kita ngomongin git biasanya kita akan setup sebuah workflow saya akan kasih tau git namanya successful git branching saya akan kasih gambaran dulu gimana kenapa orang itu pakai git untuk berkolaborasi jadi ini adalah contoh dari istilahnya gini gini ini deh saya pakai yang yang ini aja gambarnya intimidating tapi jangan takut karena ini sangat gampang dipahami Jadi ini adalah Git Branching Model. Tadi teman-teman sudah lihat bahwa kita punya branch master ya di sini. Branch master, kemudian kita commit, commit, commit, commit. Ini titik ini sebenarnya commit juga. Tag ini satu hal yang lain, tapi nantilah. Kita tidak perlu bahas sekarang. Tapi biasanya, kalau seandainya kita bekerja di sebuah tim, di mana satu proyek itu dikerjakan oleh beberapa orang, ya misalkan teman-teman ngerjain tugas kuliah kan, paling tidak ada 3 atau 4 orang ya. Nah itu biasanya kita itu bisa kerja secara paralel, tanpa nge-block orang-orang. Caranya dengan apa? Caranya adalah dengan menggunakan branch. Jadi gini, bayangkan saya dengan satu teman saya namanya Budi misalkan. Saya diminta mengerjakan fitur login dan Budi diminta untuk mengerjakan fitur katalog produk. Atau kalau teman-teman buka e-commerce ada tampilan barang-barangnya, tampilan produk itu katalog produk. Nah, gimana caranya saya dan Budi... tidak perlu tunggu-tungguan. Karena kan gini kan, ada orang mikir, oh harus bikin loading page-nya dulu, baru kita bisa ngerjain catalog page-nya. Tidak juga sebenarnya. Sebenarnya saya bisa ngerjain login sendiri, si Budi bisa ngerjain catalog. Makanya, biar saya bisa kerja di environment yang terpisah, artinya Budi nanti tidak mengganggu codingan saya, saya tidak mengganggu codingan Budi, kita bikin namanya branch. Branch itu, Branch itu sebenarnya ya dari namanya aja Artinya adalah percabangan Jadi dari satu titik di komitan kita yang paling terakhir tadi Kita bisa bikin branch Misalkan Saya pengen bikin sebuah fitur Saya pengen bikin fitur login Berarti nanti saya akan kasih namanya git branch login Caranya gimana? Gini Kita balik lagi ke website legend kita ini saya akan git stash dulu aja git stash ini apa nanti saya jelasin saya pengen nge clean up dulu aja jadi dari sini kita bisa punya command git branch namanya git branch itu untuk ngeliat ada branch apa aja di project ini Jadi teman-teman bisa lihat sekarang bahwa kita cuma punya satu branch namanya master. Nah tadi saya bilang, saya sekarang ditugaskan sama si Budi untuk bikin fitur login. Tapi si Budi juga akan kerja dari Gitlog ini. Kita sama-sama mulai dari commit ini. Karena sebelumnya kita udah develop macem-macem. Oh yaudah oke kita mulai dari commit yang paling terakhir ya gitu. Jadi dari sini, karena saya sekarang adanya di sini, di headmaster ini. Saya akan bikin sebuah branch baru namanya. git branch minb git branch pake ini aja git checkout minb jadi git checkout minb ini adalah komen yang dipake untuk ngebikin branch baru, nah karena kayak gini saya akan bikin nama branchnya adalah login jadi orang-orang itu biasanya punya convention sendiri sendiri-sendiri juga untuk ngebikin nama branch ada yang ngasih nama branchnya itu kode fiturnya jadi kalau kita kerja nanti kita ada tugasnya itu punya ID misalkan DSC01, DSC02, DSC03, DSC01 itu untuk login DSC02 untuk segala macam dan lain-lain nah ada juga yang bikin misalkan seperti itu DSC01 misalkan kayak gitu Ada juga yang harus ngasih namanya fitur slash DSC01. Ada juga orang yang punya convention fitur slash login. Jadi tergantung gimana timnya itu punya convention. Untuk sekarang, untuk mengesedarkan, saya akan pakai dulu git checkout minb login. Ini tugasnya untuk bikin branch baru dan langsung pindah ke branch tadi. Jadi sekarang kita di branch master ya. Kalau ini saya enter, saya akan dapat switch to a new branch login. Nah kalau saya nggak salah tuh ada komen baru namanya git switch kalau nggak salah. Nah ini bisa dipakai juga untuk ngeganti branch. Jadi tadi dari branch master saya pindah ke branch login. Sekarang saya akan kasih dulu perubahan di sini. Ini perubahan di branch master. Jadi saya lakukan perubahan dulu di branch master. Eh git add sorry. Git commit min s. saya kasih add line in readme misalkan gini ya jadi sekarang kalau saya git log min min one line teman-teman bisa lihat bahwa disini master tuh udah maju ke depan sementara branch login tadi ketinggalan di belakang oke ya di sini udah jadi ini emang sengaja by intention login itu ketinggalan satu komedi belakang sekarang saya akan balik lagi ke hai hai Branch login. Nah sekarang saya sudah di branch login. Saya akan bikin file-file khusus untuk login. Jadi saya akan bikin daripada saya bikin file nambahin di sini. Kan sekarang saya ingin bikin fitur login dong. Berarti saya akan bikin misalkan login.go misalkan. Login.go saya akan kasih package main. Ini cara ngoding go aja ya standar. Kemudian saya bikin di sini. FMT println ini saya comment aja ini untuk menjalankan aplikasi nah sekarang saya udah nambahin coding fitur Anggap ini fitur jadi saya udah selesai kemudian saya akan git add lagi kemudian saya akan git commit min sc yyyy bentar git commit min m add login fitur, misalkan gini sekarang udah, udah ke commit kalau saya git log min min one line nah teman-teman bisa lihat disini bahwa fitur login itu udah punya satu komitan baru, ini komitan yang sebelumnya ada di master ya, tapi ini komitan yang ada di fitur login terus ternyata saya menemukan bug oh saya harus nge fix bug berarti yaudah, saya tambahin lagi ini untuk nge-fix bug kemudian yang saya lakukan apa saya akan git add lagi, saya simpen lagi git commit min m fix login bug, misalkan kayak gitu nah di titik ini kalau misalkan teman-teman balik ke source tree teman-teman bisa lihat bahwa ternyata dia itu emang nge-branch saya gak tau ini keliatan gak ya kekecilan ya kayaknya, tapi teman-teman bisa lihat lah disini ada garis ini adalah login, ini branch yang tadi kita bikin master tadi itu udah beda jadi master itu yang merah sementara yang kita kerjain itu sekarang biru nah ini kenapa dia branchnya kayak gini kenapa gak master yang di tengah karena kalau tadi teman-teman ngeliat disini kan master disini ini nge-branch kesini kan sebenarnya gak ada masalah juga ini karena kebetulan branch yang aktifnya adalah branch login sekarang kalau saya switch kita lihat lagi UI nya, nah titik ini kan ada merah nih, sebelumnya kan ketika kita di branch login yang titik merah yang besar itu ada di biru kan, lingkaran besar itu ada di biru sekarang disini dia ngasih tau bahwa karena kita pindah ke master, commit yang aktif itu adalah commitan ini tapi di branch master jadi kira-kira kayak gitu kegunaannya git branch, jadi git branch kemudian kita bikin branch baru kemudian nanti kita akan tambah fitur-fitur macam-macam sekarang misalkan saya berubah dari saya jadi Budi, saya akan switch ke master Budi ini agak telat nih ngerjainnya misalkan tadi si login ini kan ngerjainnya dari fitur dari komitan kedua ya makanya di sini dia nambahin tapi Budi itu nanti di branch dari master yang paling terakhir di sini oke jadinya ketika saya balik ke master Budi itu akan bikin branch baru di check out min B catalog sekarang Budi itu udah di branch catalog kemudian si Budi disini akan bikin file namanya nah kalau teman-teman lihat di sini enggak ada lagi kan file login.go karena dia udah emang branch yang berbeda jadi kalau mau login.go tadi harus pindah ke branch login sekarang si Budi mau ngerjain file-catalog.go disini si Budi cuma akan bikin kayak gini doang kemudian dia akan kasih comment ini adalah file untuk produk katalog selesai anggap fiturnya udah selesai gak ada bug kemudian si Budi akan commit lagi git status ternyata ada saya bikin dua file ya biar kelihatan katalog file mungkin produk.go juga Saya tambahin juga package main disini. Kemudian saya bikin disini ini adalah fitur untuk produk dan seterusnya. Dan sekarang kalau kita lihat disini ada dua file. Ada catalog.go dan product.go yang belum ke stage. Seperti biasa kalau kayak gini kita akan git add. Kita akan git add supaya ketika kita git status lagi file-nya sudah ke stage. Tapi file ini belum ke commit. Jadi yang kita lakukan. kita git commit min m add product and catalog udah sekarang dia bilang ada 2 file changes ada 6 insertion across 2 file tadi jadi ada catalog.go product.go nya udah kebuan nah sekarang nih si fitur login dan fitur catalog itu ada di 2 branch berbeda pertanyaannya bagaimana caranya mereka menggabungkan fitur tadi nah disinilah ah Kenapa? Ada fitur namanya Git Merge. Jadi gini, tadi kita udah belajar Git Branch, Git Branch nama branch-nya, cara bikin branch juga bisa kayak gini ya BTW ya. Tadi saya bikinnya git checkout min b, supaya saya bisa langsung masuk ke branch tadi. Jadi misalkan kalau gini, saya balik lagi ke sini, saya balik ke master, saya balik ke master, saya bikin Git Branch, misalkan payment. Nah teman-teman lihat bahwa git branch payment, branchnya ke bikin tapi saya masih tetap di master. Itu alasannya kenapa tadi saya pakai git checkout supaya bisa langsung masuk ke branchnya. Tapi kalau seandainya disini saya git branch, teman-teman bisa lihat bahwa sekarang ada 4 branch. Ada master, ada katalog, login, dan payment. Jadinya kayak gitu. Oke ini udah ini udah sekarang kita akan masuk ke bagian untuk ngemerch jadi merge itu maksudnya gimana nah ini magicnya itu ada di sini jadi teman-teman tadi lihat ya di sini ada branch master oh tadi belum ke commit ya katalog tadi mana ya sorry sorry eh sorry sorry saya salah lihat jadi ini katalog Nah ini teman-teman bisa lihat ini branch master ya Master Ini ada branch payment yang terakhir kita buat Tapi ini saya hapus aja biar nggak bikin bingung Cara ngedelet bisa git branch minde Nama branchnya Jadi ini saya klik-klik aja Nah sekarang kita ada 3 branch Ada catalog, ada master, dan ada login Uh Pertanyaannya bagaimana caranya saya ngegabungin fitur yang udah saya buat dengan fitur yang dibuat si Budi tadi di branch catalog. Namanya adalah merge. Merge itu adalah fitur untuk menggabungkan sebuah branch dengan branch yang lain. Jadi misalkan di master ini tadi saya cuma punya read.me.md. Tapi di login tadi saya nambahin file login.go. Ketika saya merge, codingan saya dari login ke master. Otomatis nanti di master jadi ada 2 file hasil gabungannya Teorinya kayak gitu Sekarang kita lihat Bisa jadi lupa Oke Sekarang kita di master ya Kita git log min-min one line lagi Nah sekarang master itu cuma ada 1 file readme Nah Sekarang pertanyaannya, ini saya close semuanya aja, close all. Pertanyaannya, apa bedanya kalau kita nge-merge dari branch login ke master versus dari master ke login? Jadi bedanya adalah kalau seandainya teman-teman nge-merge dari satu branch ke branch lain, nanti perubahan hasil akhirnya akan disimpan di branch destinasi. Jadi kalau tadi saya punya Redmi MD. Kemudian di branch login itu ada fitur login.go. Ketika saya merge dari login ke master, nanti login.go itu akan masuk ke master. Tapi kalau saya lakukan sebaliknya, dari master ke login, perubahan yang ada di master itu akan dimasukkan ke branch login. Nah itu perbedaannya. Mungkin lebih kelihatan kalau kita nyobain. Jadi untuk merge itu saya pindah dulu ke branch destinasi. Sekarang destinasi adalah master. Saya pindah ke master. berarti yang saya lakukan, saya akan git merge git merge, jelasin ini dulu atau gimana ya saya akan, aduh ini agak abstract konsepnya, no fast forward saya coba git merge dulu aja deh jadi saya akan merge dari login ke master, jadi akan git merge login jadi git merge nama branchnya apa, sesimpel itu saya enter, nah Disini kita akan ditampilkan sebenarnya dengan commit message. Jadi kita bisa ngasih tau, oh commit message ketika dia di merge itu apa. Kenapa kita bikin commit message lagi? Karena ketika kita nge-merge dari satu branch ke branch lain, dia akan ngebikinin commit baru di branch master. Nah makanya muncul disini ketika kita bikin git merge, itu muncul UI untuk masukin commit message-nya. Makanya disini. jadi disini saya akan ganti saya akan ganti message nya misalnya jadinya saya ingin adding login feature to master branch ini ya ini saya save nah kemudian disini merge made by recursive strategy ada file login Sekarang kita di master, tapi teman-teman lihat bahwa saya sudah punya file login.go dan readme.md di sini. Ini adalah dua file yang sebenarnya dibikin di branch yang berbeda, tapi sekarang sudah jadi satu. Apa dampaknya ke UI? Teman-teman bisa lihat bahwa sekarang master itu di sini. Tadi kan kita mulai nge-branch di login itu dari commit kedua ya. Jadi kelihatan bahwa ada commit di sini, nge-branch. ada commit-commit kemudian masuk lagi ke master. Nah itu makanya dia disebut sebagai branch dan merge. Kalau kita lihat ke penjelasan di sini tadi. ini adalah branch tadi ketika selesai dia nanti akan di-merge balik ke branch utamanya atau ke branch lain tapi di sini dia di-merge ke branch lain tapi sebenarnya ujung-ujungnya dia akan di merge lagi ke branch master jadi makanya ketika di-merge dia akan bikin satu komitan baru makanya kalau kita lihat di UI ini ini adalah komitan mergenya tadi karena master itu kan terakhir komitannya adalah ini ya add line in readme ya kemudian ketika di-merge dia ada tambahan komitan baru yang nambahin file login.go kira-kira kayak gitu nah sekarang fitur saya udah masuk ke master tapi fiturnya si Budi belum gimana caranya Budi juga ingin mengintegrasikan fiturnya ke branch master sama persis cuman yang perlu kita lakukan adalah si Budi nanti akan masuk ke branch master kemudian dia akan git merge git merge git merge apa ya tadi namanya katalog ya git merge catalog sama saya gak akan ganti sekarang saya commit message nya saya pakai default saya commit kemudian teman-teman sekarang lihat bahwa di master jadinya ada 4 file 2 bikinan si Budi 1 bikinan saya dan 1 lagi sebelumnya udah ada di master jadi kayak gitu caranya kita bekerja dalam tim nah tapi kan ini 1 komputer mas tapi kan kalau saya kerja sama teman saya kan beda komputer nah ini yang akan kita bahas berikutnya kita akan bahas tentang bagaimana kita menggunakan git registry atau repository untuk berkolaborasi dengan orang lain. Tapi sebelum ke sana mungkin ada pertanyaan kali dari pesertanya sambil saya ngeliat-liat ada yang nanya di Youtube juga atau enggak. Untuk saat ini belum ada Bang. Oh berarti saya cek yang di Youtube dulu ya. Ada yang bilang jadi istilah master katanya nggak boleh dipakai lagi ya betul nggak? Jadi sekarang Github itu kalau nggak salah pakai konsepnya main. Jadi instead of master, nama branchnya main. Sebenarnya nggak ada masalah juga sih. Masih banyak kok yang master. Itu kalau nggak salah main itu Github doang deh yang pakai kayak gitu. Seingat saya ya. Mungkin saya bisa salah. Tapi master masih bisa tetap jadi brand utama. Di aku branchnya main. Sebentar ya. Karena kita masih punya banyak waktu. ini ada yang pertanyaan kalau misalkan kita perlu fix bugs dari branch fitur yang udah kita push dan merge ke development best practice nya gimana jadi kalau seandainya nge-fix bug ya kita jangan ngerubah commit yang sebelumnya kita harus ngebikin commit baru untuk nge-fix bug jadi sebenarnya ya kalau tadi kan teman-teman bisa lihat ketika saya pengen bikin ini misalkan ini udah saya commit kemudian ternyata ada bug, saya bikin komitan baru untuk nambahin ini jadi ini beda kan, ini komitnya add login feature kemudian disini saya bikin komit baru untuk fix login bug jadi yaudah saya akan bikin komit baru aja untuk nge fixnya Nah ada yang nanya nih tadi git merge min min no ff itu apa nanti coba search di Google dulu aja kalau ada yang nggak tahu itu istilahnya no fast forward itu lebih kebutuhannya agak-agak gimana ya kalau seandainya nanti kita udah kerja di tim itu biasanya banyak kepake min fast forward karena kemudian orang juga jadi branch-nya macem-macem ketika di merge Takutnya ada perubahan dan segala macem, jadi baru kepake nanti yang min-minno-minff Ada satu pertanyaan lagi kali Oh kenapa pake github desktop daripada pake source 3 Kenapa gak pake github desktop, karena saya suka source 3 aja sih sebenernya karena desktop app, saya nggak pernah pakai github desktop juga soalnya ada pertanyaan lagi kalau semua fitur udah di branch ke master biar branch nya lean Biar branch lain up to date, apa branch yang lain ini harus merge dari master? Nah ini pertanyaan bagus. Jadi kalau seandainya semua fitur sudah di branch ke master, terus biar branch lain up to date, itu caranya gimana? Nah, jadi gini, ini pertanyaan bagus. Saya suka nih. Jadi kalau teman-teman lihat di sini, semua branch itu kan sekarang sudah di merge ke master. Tapi misalkan gini, saya akan bikin satu komitan lagi di master. Saya bikin komitan di master, jadinya... saya bikin tambahan baru deh tambahan baru disini aja ya tambahan baru sorry saya akan bikin branch dulu disini git branch saya bikin fitur baru mungkin namanya recommendation misalnya gini sekarang kenapa nih git status oh ini gco aja gco di Git co recommendation Oke di sini saya akan bikin perubahan fitur recommendation balik recommendation fitur misalkan kayak gini ya ini kemudian saya at Git commit in smin mmin m-m at recommendation fitur misalkan kayak gini ini saya tambahin sekarang saya balik ke master di master kan nggak ada ya fitur recommendation tapi yang saya lakukan adalah di master saya nambahin sebuah file misalkan test.sh disini saya akan bikin ini slash bin slash sh kalau nggak salah bin bash jadi misalkan kayak gini saya bikin sesuatu disini saya echo hello ini di master ya BTW Jadi ini di master, anggap ini adalah fitur untuk AI, misalkan kayak gitu. Kemudian yang saya lakukan, saya akan commit lagi di master, add AI feature, misalkan kayak gitu. Nah, kondisinya sekarang, kalau kita balik ke source tree, recommendation itu sudah ketinggalan sama master. Misalkan ada orang lain yang sudah menambahkan fitur baru ke master dan ternyata recommendation itu butuh fitur itu untuk dipanggil ketika pengerjaan fitur recommendation itu sendiri. Gimana caranya? Yang bisa kita lakukan adalah kita akan merge master itu ke branch recommendation. Caranya bagaimana? Sama persis seperti tadi. GCO Recommendation, saya pindah branch atau git switch recommendation, kemudian saya akan git merge master. Git merge master, saya comment.2wq, sekarang recommendation saya itu sudah punya fitur master. Jadi kalau kita lihat di sini. Disini, saya di branch recommendation tapi sekarang saya sudah punya test.sh Jadi apa yang ada di master itu sudah ada di saya Ini cara yang pertama Ini cara yang pertama yang relatif gampang kalau dari segi cara mikir Cuman ada salah satu cara yang lebih clean kalau menurut saya Daripada kita melakukan ini, jadi recommendation itu sekarang akan saya revert saya reset hard ini apa nah ini nanti aja ini kalau teman-teman udah lumayan fasih dengan yang tadi semua baru nanti coba git reset git revert dan segala macam tapi ini sekarang saya balikin lagi recommendation ini saya tinggal tadi kan teman-teman lihat ketika master itu saya merge ke recommendation dia nambahin satu commit ya iya nggak sih tapi ada cara lain yang menurut saya lebih clean daripada nambahin merge commit namanya. Nah ada caranya. Caranya gimana? Jadi saya akan pakai command namanya git rebase. Lihat ya. Bedanya nanti tadi kan kalau kita merge jadinya ke nambah satu commit kan di recommendation-nya nanti ada commit merge. Tapi kalau saya pakai git rebase itu dia akan mindahin commit itu ke paling ujung. Jadi yang sebelumnya itu di sini. recommendation itu startnya disini ketika saya pakai git rebase ujungnya recommendation head apa sih istilahnya berawal branchingnya itu akan pindah ke master paling atas nah perbedaannya kayak gimana jadi nanti kita lihat sini saya akan pakai git rebase master sekarang udah besar udah sukses saya belum bahas konflik dan segala macem ya eh sekarang kita akan lihat disini bahwa jadinya UI nya akan berbeda nih teman-teman bisa lihat bahwa ini seolah-olah git recommendation tadi itu dimulai branchnya dari master branch paling terakhir jadi enggak ada jadi dia enggak ada commit merge lagi dia akan mindahin awal mula recommendation itu ke paling ujung, jadi makanya paling ujungnya adalah master, jadi seolah-olah si recommendation itu mulainya dari master yang paling ujung, padahal sebenarnya sebelumnya bukan seperti itu, makanya kalau kita lihat disini hasilnya sama hasilnya, sama-sama punya test.sh juga, tapi di git commit nya itu jadi lebih clean, di git branch nya jadi lebih clean, karena gak ada hasil merge commit masuk ke branch recommendation, jadi kira-kira seperti itu mudah-mudahan menjawab ya pertanyaannya tadi ya itu dulu deh nanti kita lanjut lagi ke pertanyaan yang ada di youtube sekarang saya pengen bahas hal yang lebih penting ketika kita menggunakan git yaitu tentang bagaimana caranya kita berkolaborasi saya udah punya github harapan saya teman-teman semua udah punya github at least Jadi codingan tadi udah saya kerjakan di lokal, anggaplah sekarang semua fitur tadi walaupun ada katalog dan segala macam dikerjain budi, kita ubah lagi semuanya, skenario-nya itu adalah saya yang ngerjain sendiri. Dan sekarang saya pengen orang lain itu juga ikut berkontribusi ke proyek. Misalkan kita punya proyek tugas kuliah, ada satu orang yang ngebikin repo, kemudian nanti teman-teman sekelompoknya akan ikut berkontribusi ke proyek itu. Caranya gimana? Kita akan pakai namanya GitHub. Git repository, git repository itu ada github, gitlab dan macam-macam ini github repository saya, imbrenagi, teman-teman bisa punya ID sendiri-sendiri kalau saya itu punya fitur achievement dan sponsor, nah sponsor ini saya pengen ngasih apresiasi untuk monthly sponsor saya baru satu orang, tapi kalau teman-teman mau jadi monthly sponsor saya, saya akan dengan senang hati gokil, jadi ini semua repo saya yang sudah pernah saya buat sebelumnya kebanyakan repo untuk demo karena untuk repo untuk kerjaan ada di terpisah sendiri saya minum dulu tapi oh ya btw saya punya youtube ya kalau yang mau nonton youtube saya silahkan cloud engineering with imbre jadi apa yang akan kita lakukan supaya orang bisa berkontribusi ke website DSC tadi kita akan bikin disini new repository repository namenya adalah saya akan bikin misalkan website DSC saya samain aja namanya karena belum ada jadi oke kita bisa kasih deskripsi bisa bikin private atau public tapi saya akan bikin public ini semuanya saya kosongin dan saya akan create repository kosong oke sekarang disini ada dua cara ini adalah ada tahap di sini di mana dia bilang kalau kalian punya repo baru belum ada isinya kalian bisa pakai comment untuk ini tapi kalau seandainya kalian udah punya existing repo kalian bisa pakai comment ini nah jadi di git itu ada comment namanya git remote git remote sekarang kalau kita balik ke sini nah Kalau saya jalanin git remote minvi atau git remote, itu tidak ada remote yang muncul di repo saya, karena repo saya ini sifatnya masih lokal. Makanya di sini yang bisa kita lakukan pertama kali, karena kita sudah punya existing repo di lokal saya, jadi kita akan bikin comment, kita pakai comment git remote at origin. kemudian link ke git repo nya jadi ini origin ini untuk ngasih tau nama branch di internet nya lah nama di git nya, origin biasanya ada juga yang pake origin, upstream upstream itu biasanya kalo kita nge-vote repo, nah itu konsep yang lain lagi lebih advance lagi dan itu biasanya dipakai untuk kontribusi ke proyek-proyek open source disini teman-teman lihat kan ada tombol fork ya ini biasanya fork itu akan orang pakai kalau orang mau berkontribusi ke repo orang lain tapi kalau seandainya kita tadi ngerjain tugas biasanya yang bisa kita lakukan di setting ini kita nanti akan tambahin manage access Nah saya bisa tambahin kolaborator. Jadi misalkan saya kerja saldi sama si Budi. Nanti disini saya bisa masukin Budi. Misalkan kayak gitu. Nah ada banyak nih Budi yang mana jangan sampai salah orangnya. Misalkan siapapun itu. Itulah sebenarnya. Jadi kita bisa tambahin kolaborator. Nah kalau kita udah tambahin kolaborator. Dia bisa langsung kerja di repository yang sama. Originnya sama. Sekarang kita akan balik lagi ke sini. Kita akan masukin git remote ini. Dari ke lokal kita. Git remote. Nah sekarang kalau saya git remote minv lagi. Teman-teman bisa lihat bahwa sekarang saya punya origin disini. Origin ya link ke github saya tadi. Dan ini. Hai gimana cat berikutnya mau kita lakukan setelah kita komit macam-macam ya kita tinggal git push minu Origin Master jadi semua changes yang udah kita lakuin tadi di lokal pengen kita masukin ke GitHub caranya git push jadi git push itu untuk mendorong semua file itu ke internet atau ke git poni-poni Nah teman-teman bisa lihat ada beberapa message tapi dia bilang di sini bahwa sekarang branchnya itu ada master cuma master doang kenapa cuma master doang ya karena yang kita push itu cuma master ya nggak papa karena semuanya itu udah selesai kalau seandainya kita balik lagi GCO master. Nah sekarang kita di master. Kalau kita balik lagi ke sini. Nah sekarang teman-teman bisa lihat. Bahwa disini ada master. Dan ada origin slash master. Origin slash master ini untuk ngasih tau bahwa. Di hub repo nya itu. Commit paling terakhirnya dimana. Ya commit paling terakhirnya sekarang ada disini. Master di titik ini. Misalkan gini. Jadi saya tambahin lagi commit. echo hello2 di master git status git add git commit minm add advanced AI feature misalkan gini kalau kita lihat disini sekarang teman-teman bisa lihat bahwa origin masternya itu ketinggalan di belakang dibandingkan masternya jadi untuk biar dia sama kita harus push lagi Kenapa kayak gini ya Karena kita kalau development di lokal kan kita gak selalu nge-push ke master kan Atau ke origin Jadi makanya origin kita tuh bisa di titik yang berbeda dengan apa yang ada di master Nah sebelum kita push lagi saya pengen liatin sekarang Kalau disini sekarang kita udah punya echo hello2 Tapi karena tadi kita nge-push sebelumnya cuma sampai sini Otomatis di repo yang udah kita dapet ini tadi Kalau saya refresh Udah ada kodingan yang masuk Tapi kalau kita lihat test.sh nya itu cuma sampai echo hello doang. Karena sekarang state yang ada di GitHub itu berbeda dengan state yang ada di lokal saya. Untuk nyamain lagi-lagi caranya adalah git push. Git push dan kalau saya refresh jadi nambah echo hello 2. Nah ini kita baru ngomongin tentang git clone. Ada konsep ini baru git clone untuk nge-push ya nge-push. Nah apa bedanya kalau kita mau misalkan Misalkan gini, anggap saya orang baru lah Santi misalkan Santi pengen ikut ngerjain tugas Kemudian apa yang dilakukan si Santi untuk bisa buka codingan ini Karena dia juga mau ngerjain fitur lain Misalkan ngerjain fitur Fitur food delivery misalkan kayak gitu Saya gak tau ini aplikasi apa tapi Ada food lah, kayak GoFood misalkan Si Santi datang, saya kasih tau Ini Santi, ini reponya Silahkan, nah Santi akan buka ini Kemudian, untuk nge-simulasiinnya Saya akan pindah ke CD personal, mkdir Kasih nama Santi disini Ini anggap laptopnya Santi ya Sekarang di Santi itu belum ada kodingan Eh, kok ada gini sih? Oh salah-salah sebentar ya tadi salah cd personal mkdir Santi saya masuk ke laptopnya si Santi misalkan kayak gitu sekarang jadi di laptop Santi itu belum ada apa-apa nih terus saya bilang ini link reponya silahkan di klon nah jadi makanya di sini ada comment yang namanya git klon ini saya copy kemudian biar di laptop si Santi codingan tadi itu bisa masuk jadi yang dilakukan adalah git clone ini sekarang kalau kita lihat di laptop Santi itu juga udah ada website DSC ini kan sekarang yang mau kita lakukan adalah ya misalkan ini saya rename deh mv website DSC jadi mv jadi website DSC Santi misalkan kayak gitu biar saya bisa buka VSCode nya dua yang berbeda eh salah sorry CD website DSC Santi. Nah ini. Sekarang saya akan buka. Sekarang Santi ini udah mau ngerjain juga. Tapi kalau teman-teman lihat di laptopnya si Santi ini cuma ada branch master. Kenapa? Karena tadi branch-branch fitur, login, dan recommendation itu nggak kita push. Nah sekarang saya akan nunjukin gimana caranya si Santi ini pengen bikin fitur baru. Tapi nanti dia akan melakukan... yang dipush itu adalah branch dia, jadi dia nggak langsung nge-push dari master tapi dia nge-push branch dia jadi Santi ini akan bikin fitur baru, gco-b misalkan apa ya, gofood tadi misalnya jadi Santi itu pengen bikin fitur gofood, misalkan gini, sekarang udah nah sekarang ini kalau teman-teman lihat saya sudah punya editor yang berbeda sama yang tadi website DSC Santi ini anggap laptopnya Santi ya berbeda ya sama laptop saya ini branch gofood sekarang Santi akan bikin sebuah file namanya gofood.co disini dia akan bikin package main lagi disini dia bilang ini fitur gofood dengan dengan diskon gila-gilaan. jadi ini fitur yang udah selesai dikembangkan oleh si Santi kemudian yang dilakukan oleh Santi adalah git status sama persis git add git commit min s min m dia bilang min m aja deh sorry Kenapa saya dari tadi salah ngetik min s itu karena min s itu gunanya untuk signing. Signing itu maksudnya apa? Jadi biar yakin bahwa apakah orang yang ngerjain commit ini beneran orang yang bener gitu. Jadi nanti dia akan nanyain password. Tapi karena saya nggak mau nunjukin itu jadi saya pakai min m aja. Add gofood feature. Sekarang udah. Nah. sekarang si Santi ini kan tadi udah punya branch ya cuman kalau kita balik lagi ke project ini dia cuma ada satu branch cuma ada branch master nah sekarang Santi itu pengen nge-push branch dia jadi yang dilakukan oleh Santi adalah git push gofood dia akan nge-push aduh salah lagi git remote sorry git eh git remote minv ini sorry salah, sebentar ya sebentar sebentar sebentar ssh aja git remote remove origin git remote add origin nah sekarang dia akan push nah ini commentnya git push min set upstream origin gofood ini saya push sekarang setelah si Santi nge-push sekarang kita bisa lihat bahwa ini ada branch baru di sini yaitu branch GoFood jadinya selain kita bisa nge-push codingan kita juga bisa nge-push branch jadi kalau seandainya sekarang si Santi itu pengen bikin GoFood sekarang udah bisa ngasih rekomendasi yang 100% kekurat, which is in fact is not true karena susah ya 100% sekarang dia akan bikin add lagi git commit min s min m min m aja I'm proud of my feature, nah udah ini dia push lagi nah ini balik lagi ya git log coba kita lihat min one line Hai eh disini originnya disini tapi karena barusan kita nambahin itu sekarang kita ada di satu komit yang lebih atas nah udah kan udah nih selesai kemudian dia akan push-push saya punya shortcutnya GP saya bikin mana nih Aduh itu saja git push nah sekarang udah jadi sekarang kalau seandainya di github ini saya pengen ganti branch saya tinggal klik ini branch gofood sekarang saya bisa lihat fitur gofood yang dikerjain oleh Santi ini nah ini udah nih si Santi udah masukin changes lagi-lagi gimana caranya Santi itu bisa mengintegrasiin changesnya di master karena di master tuh sekarang enggak ada fitur gofood oh kan error kan karena dia ya simply enggak ada fitur gofood Di master itu tidak ada fitur GoFood, lihat di sini tidak ada GoFood.go. Nah caranya kalau kita kerja di open source community atau di kantor ada konsep namanya pull request. Jadi dari sebelum, kadang karena gini, tidak semua orang itu boleh nge-merge langsung ke master. Karena master ini adalah branch yang mungkin dianggap suci, tidak boleh ternodai dengan yang macam-macam. Jadi sebelum itu di-merge itu ada proses-proses kayak review dan lain-lain. Jadi makanya ada konsep namanya pull request atau PR review. Pull request review. Nah untuk melakukan itu biasanya coding-annya itu branch-nya itu dipush ke origin yang udah kita lakukan barusan. Kemudian nanti baru kita akan buka pull request. Jadi gini sekarang disini udah dikasih tau bahwa GoFood udah punya changes. Kita bisa klik compare dan pull request untuk ngebikin pull request. Jadi disini. Jadi nanti misalkan ini Santi ya bukan saya sebenarnya. jadi adding GoFood advanced GoFood feature misalkan kayak gitu disini teman-teman bisa lihat bahwa dia base nya adalah Master destinasi nya adalah Master nanti dia akan ngemerge codingan dari GoFood ke Master jadi sama kayak tadi dari kita mau masukin login ke Master berarti destinasi nya adalah Master dan sumbernya adalah login Disini saya bisa kasih deskripsi misalkan tadi add 100k promo feature for GoFood Kemudian ada add advance recommendation Nah saya bisa kasih deskripsi Setelah ini selesai saya bisa assign reviewernya misalkan Siapa ya? Nanti kalau saya assign ke orang lain Ini karena saya yang bikin jadinya saya nggak bisa assign ke diri saya. Tapi kalau yang bikin misalkan orang lain nanti bisa di assign ke project owner-nya. Sekarang saya bikin aja tanpa ada reviewer. Nah di sini nanti kita bisa lihat changes yang dilakukan Santi itu sebenarnya apa sih. Oh ternyata Santi itu bikin dua commit. Commit pertama I'm proud of my feature. Yang kedua sorry yang pertama adalah add GoFood feature. Yang kedua adalah I'm proud of my feature. Kita bisa lihat masing-masing ini changes-nya apa. kayak gini ini changes-changesnya tapi kalau kita mau lihat whole changesnya yang sebelum perbedaannya banget antara master dan gofood itu kita tinggal klik files change kemudian kita bisa lihat dalam disini kalau seandainya ternyata ngelihat eh kayaknya nih fiturnya ada yang salah deh codingannya ada yang salah kita bisa comment di sini bilang ini ngapain nih Oh begini misalkan kayak gitu ya mungkin bisa lebih bagus bisa lebih baik kalau gini misalkan kayak gitu ini kita bisa langsung start review atau at single comment Nah nanti si Santi itu kalau ngeliat komitan ini, oh iya nih salah nih ada yang salah, terima kasih ya katanya. Terus yang dilakukan oleh Santi adalah dia akan ngefix. Karena tadi gue nge-comment di line ini, gue akan ganti dengan diskon yang oke. Jadi diperbaiki lah codingan. Kemudian yang dilakukan oleh Santi, dia akan git add lagi, git commit, min m, fix based on review. Dia akan push lagi. ke branch gofood di master eh di origin sekarang kalau kita refresh nah disini udah berubah nih conversation nya tetap ke keep tadi saya nge-comment di ini tapi disini si Santi udah ngebenderin fix based on review dan ketika kita lihat files change Oh ternyata udah berubah tuh yang gila-gilaan tadi udah berubah jadi yang oke oh oke reviewnya udah diterima dan saya bisa bilang disini reviewnya approve Oh ini karena saya punya punya saya sendiri jadi saya nggak bisa tapi nanti dia bisa di-approve kemudian dia bisa submit misalkan kayak gitu udah ini belum nih saya kasih comment mantul mantul comment submit review submit review dan nah kalau seandainya saya lagi saya project owner nya karena saya udah bilang oke udah mantap saya akan merge pull request ketika saya merge pull request Disini saya kasih commitnya, confirm merge. Kemudian, nah ini jadi menarik. Kalau kita lihat balik lagi ke project yang pertama tadi banget, yang ini, ini kan belum ada GoFood ya. Artinya sekarang brand saya sendiri itu ketinggalan dari origin. Terus gimana caranya biar saya tahu kalau ada perubahan? Ada commit, ada comment namanya git fetch. untuk nge-pull changes dan branch. Nah, di sini saya bisa lihat bahwa sekarang Git log online, master, eh mana sih? Oh, ini saya belum set origin, sorry. Git remote at origin, gini ya. Git fetch, Git log, sorry. Eh, kok nggak bisa sih? Oh gini aja deh, gini aja gini aja dipakai pakai yang punyanya si Santi aja. Jadi ini kan tadi yang udah kita set gitnya ya dari awal. Sekarang kita akan balik ke master tapi ini master yang masih ketinggalan belum ada gofood karena changes gofoodnya itu kan enggak di-merge di branch master di lokal kan tapi ada di Origin. Sekarang yang saya lakukan git fetch Nah sekarang kalau saya git log min1 lain, kok nggak muncul? Ah elah sini aja deh. Nah ini aja nih. Jadi teman-teman bisa lihat bahwa sekarang masternya itu ketinggalan. Masternya ketinggalan di sini. Masternya di sini tapi setelah si Santi nge-merge GoFood tadi, masternya jadi berubah. Nah gimana caranya biar master kita sesuai lagi dengan master yang ada di origin. Nah ini yang juga tidak kalah penting. jadinya kita akan pakai command namanya git pull bisa git pull rebase atau git pull tapi untuk sekarang git pull aja deh, nanti kalau pengen tahu belajar tentang rebase teman-teman tahu harus kemana sekarang saya git pull dan masternya there is no tracking information, kenapa ya? ee Oh ini... oke sebentar saya set dulu ini kayaknya kekurangan Master, Master, oh oke Git full, kok nggak bisa sih? Nah, jadinya saya full sekarang Kalau saya lihat disini git log min-min online nah sekarang origin master dan Master saya tuh sekarang udah jadi sama karena ini adalah yang di-merge di GitHub tadi jadi masternya sekarang di lokal saya udah baru di origin pun sama disini makanya disini saya jadi bisa lihat ada fitur gofood karena sekarang saya ada di branch master padahal tadi kan kita enggak nge-merge brand gofood ke master di lokal kan kita ngelakuinnya di cloud tapi untuk menyamakan kita pakai comment git pull ah itu aja sebenarnya prosesnya sama lagi berulang lagi seperti itu seterus-terusnya ketika kita bekerja di tim itu aja kayaknya cukup untuk intro harapannya memang dengan ada intro ini teman-teman jadi bisa kerja bareng tim dan bisa merun komen-komen git yang default ada banyak komen git tadi ada yang bilang juga bang jelasin dong tentang cherry pick saya rasa cherry pick itu lebih sebenarnya simple tapi gak cocok untuk dibahas di intro intro Tapi untuk intro kira-kira cukup segitu dan saya rasa itu sudah cukup banyak. Mudah-mudahan teman-teman tidak muntah ya. Oke, Pak. Ini ada beberapa pertanyaan dari peserta. Boleh, boleh. Saya bacakan ya, Pak. Yang pertama, bagaimana cara mesinkronkan file yang ada di repo sama... file yang di lokal, seumpama file di repo sudah dirubah atau dihapus? jawabannya yang barusan git pull jadi changes yang udah ada di repo, misalkan gini ya sekarang saya ngerubah di repo ini kan saya bisa langsung edit disini ya, ini github ini udah canggih sekarang saya bisa code langsung pakai code space lama, bisa edit langsung lah ya misalkan gini deh, govode lagi ini saya bisa edit disini edit file kemudian saya kasih sesuatu fitur yang ditambahin di cloud ini kan saya ngerjain di cloud bukan di lokal saya bisa bikin commit dan segala macem saya commit directly to master commit di masternya udah kayak gini tapi kan di lokal saya kan gofood.go itu cuma dua ya cara ngeupdate gampang git pull masukin password saya dan sudah jadi ada sesederhana itu baik kasih Bang Imre pertanyaan yang berikutnya Bang Imre Bang saat ngebuat remote bakal dibuat dua remote patch dan put, kenapa harus dibuat dua ya Bang gimana boleh diulang pertanyaannya saat tadi ngebuat remote bakal dibuat 2 remote patch dan push kenapa harus dibuat 2 ya bang? kenapa gak dijadikan 1? oh git remote ini tadi ya git remote minv ini ya yang ini ya jadi saya biasanya saya jarang ini by default dia akan selalu bikin kayak gini jadi ini sebenernya gak perlu diganti-ganti juga kalau mau bahkan kalau seandainya kita ngerjain project open source kita kontribusi ke project open source biasanya kita akan nambahin git remote, git remote gini saya tunjukin sedikit kita masih punya kita sampai jam berapa sih QnA nya? sampai jam 11 bang. oh masih lama sekarang saya pengen cari misalkan codingannya Argo Argo GitHub Misalnya gini ya Saya pengen, let's say saya pengen contribute ke project ini yang saya lakukan adalah saya akan fork disini ada argoproj dan argoworkflow nah ini saya fork ke github saya nah sekarang teman-teman lihat disini saya akan punya repo imbrenagi slash argoworkflow fork from argoproj argoworkflow disini ini akan saya pull dulu saya akan clone misalkan ini saya akan ngerjainnya di santi tadi aja ya saya akan clone Nah sekarang kalau saya lihat disini, aduh lama, aduh lama, foldernya gede, tunggu sebentar. Nah sekarang kalau saya cd argo workflow, semua saya remote minv, originnya ini ngedirect ke repo saya. jadi kalau saya ingin nge-push, git push, origin, master, seperti ini tapi, tadi kan kita ngomongnya branch, kalau branch kita ketinggalan kita pull, kita fetch dan segala macam tapi ini sekarang beda, karena Argo workflow ini juga punya pengembangan berbeda saya ngembangin di repo saya sementara Argo workflow ini juga terus jalan jadi bisa jadi saya pun repo saya ketinggalan, makanya yang biasa dilakukan ini saya copy, saya akan set ini git remote add upstream, saya masukin repo upstream ya, jadi kalau kita lihat di sini sekarang, saya punya 4 nih, ada 4, origin upstream bisa kayak gini, nah biasanya kalau saya mau misalkan saya udah ketinggalan nih, kalau tadi saya pull, yang saya lakukan adalah git pull upstream, Master untuk ngasih tahu bahwa saya pengen nge-pull dari upstream dari branch master di upstream yaitu reponya yang mau saya kontribusi tapi ketika saya nge-push saya biasanya origin master supaya ngasih tahu pushnya jangan ke repo upstream karena nggak bisa juga karena nggak ada permission makanya di pushnya ke master nah itu kira-kira konsepnya sama kalau git pull itu kayak git fetch dan segala macam jadi kita bisa saya juga pernah nge-set ini jadi berbeda sih tapi yang biasanya saya lakukan adalah saya bikin dua of Origin dan upstream nanti saya tinggal ngasih tahu git pullnya dari Origin yang dari Origin atau upstream branch apa atau git pushnya mau ke Origin atau upstream branchnya apa jadi kira-kira kayak gitu jawabannya mudah-mudahan menjawab ya Untuk pertanyaan berikutnya, Bang Imre, perbedaan git fetch sama pool itu apa ya? Git fetch sama pool? Ya. Oke. Jadi kalau kita ngomongin git fetch, misalkan gini. Misalkan tadi saya balik lagi ke website DSC. Misalkan... misalkan tadi ini ya saya akan balik lagi ke tar oke sekarang kan ini saya punya git branch ada empat di santi di website DSC nya Santi ini kalau saya git branch, saya cuma punya satu branch nah disini karena tadi gofood ini udah ada di branch master di origin, kan gofood ini udah ada disini ya kalau kita lihat branch disini ada gofood tapi di reposa yang sebelumnya itu gak ada kalau saya jalanin git fetch itu tujuannya untuk ngasih tau nanti ada branch apa aja aduh git, git apa sih setelah, oh sorry sorry git fetch itu untuk ngeupdate Untuk sorry Untuk update changes apa yang Udah terjadi di upstream Supaya kita bisa tau Apakah master kita ini ketinggalan atau enggak Jadi kan sekarang ini ketinggalan nih Nah ini komen git fetch barusan Jadi master kita keliatan sekarang Ketinggalan karena setelah dirun git fetch Jadinya keliatan nih Originnya sekarang disini masternya disini Nah jadi dia tau bahwa Ada changes ada perbedaan Antara master dan lokal kita dengan master di origin kalau kita pakai git pull yang dilakukan itu adalah narik changesnya itu ke lokal kita. Akibatnya masternya sekarang jadi sama sama origin. Jadi sekarang master kita di lokal dengan master di origin itu jadi sama. Karena kita udah ngebikin master kita itu disamain sama si yang ada di origin. Itu bedanya. Git fetch itu cuma untuk ngasih tau perbedaannya apa. Git pull untuk meng-apply changes itu ke lokal kita. Mudah-mudahan menjawab ya. Oke, makasih Bang Imre. Sekarang ini ada pertanyaan dari si Do ya, saya bacakan buat Bang Imre. Boleh. Yang pertama, apa perbedaan Git, GitHub, GitLab, dan Bitbucket? Jadi, Git itu adalah open source software yang dari tadi kita mainin di CLI, itu adalah Git. Git ini dibuat oleh yang ngebikin Linux, namanya Linus Torvald. Itu emang open source software, cuman kalau kita punya git itu cuma di lokal, itu jadinya kita bisa punya version control tapi kita kehilangan fitur untuk kolaborasi. Makanya kayak fitur kayak GitHub, kayak GitLab dan segala macem itu adalah repository atau registry lah kira-kira. Repository dari repo-repo kita tadi. kalau kita sudah punya codingan di lokal biar nanti kalau laptop kita tiba-tiba kena virus datanya tidak hilang kita bisa nge-push dia ke cloud bayangin kayak teman-teman punya dokumen di lokal teman-teman taruh di Google Drive nah itu sama terus nanti orang bisa kolaborasi kan di Google Drive sama GitHub pun juga kayak gitu nah GitHub ini punya offering sendiri jadi dia punya fitur-fitur sendiri lah nah kalau kita melihat GitLab eh sorry sorry sorry ini kok muncul ya kalau kita lihat gitlab itu juga sebenarnya mirip github cuman dia punya ya dia kompetitornya aja ya kita bisa sign in disini aduh saya gak punya akun gitlab kita bisa login kita bisa bikin account gitlab yang nanti fiturnya juga sama di sorry nanti kita bisa nge-push, nge-pull dan segala macam dengan melakukan hal yang sama jadi ketika kita ngerun comment git di lokal itu kita bisa ngirim commentnya ke github, bisa ngirim commentnya ke gitlab dan bitbucket Bitbucket pun juga punya offering yang berbeda Pricingnya pun juga berbeda Jadi kalau GitHub itu ada batas gratisnya berapa GitLab pun juga ada batas gratisnya berapa dan seterusnya Jadi bisa beda-beda Jadi kayak apa ya Kayak ginilah Teman-teman pengen pakai cloud Cloudnya itu adalah Git Tapi ada AWS Ada GitLab Ada AWS Ada AWS, ada GCP, ada Azure Nah itu sama kayak GitHub, GitLab, dan Bitbucket Analoginya kayak gitu Mudah-mudahan jelas ya. Baik Bang Indre. Kalau pertanyaan berikutnya Bang Indre ini. Bang kalau mau kolaborasi apakah reponnya harus set publik? Atau bisa kalau kita set private? Bisa kalau private. Tapi kalau private teman-teman harus nge-add orang itu sebagai kolaborator. Kalau seandainya publik. Itu artinya projectnya open source. Jadi siapapun bahkan bukan tim dari teman-teman pun bisa ikut berkontribusi sebenarnya. Ya tapi jalurnya mungkin via pull request. Biasanya kalau kita kontribusi ke open source itu kita nggak nge-write langsung ke repo aslinya. Tapi kita fork kayak tadi kemudian kita bikin changes di repo kita. Kita submit pull request kalau orang itu setuju baru dimasukin ke repo mereka. Tapi kalau orang-orang itu udah sebagai kolaborator. Dia kalau sudah punya akses push, pull, dan segala macam, itu dia bisa langsung melakukan itu di repo tersebut. Kira-kira kayak gitu. Oke, terima kasih Bang Simre. Untuk pertanyaan berikutnya, ini bagaimana cara membuat dokumentasi yang baik untuk git? Dokumentasi yang baik untuk git. dokumentasi yang baik untuk git ini mungkin ini kali ya sebenarnya ada namanya semantic commit Jadi ada konsep namanya semantic commit. Ini kayak praktis yang bisa kita pakai kalau kita pengen bikin commit-commit. Jadi misalkan commit-nya itu selalu diawali dengan fit, fix, doc, style, refactor, test, dan core, dan segala macam. Kemudian diikuti dengan message-nya atau summary. Nah ini salah satu cara untuk melakukan dokumentasi di Git. Dokumentasi di Git itu mungkin maksudnya commit message dan lain-lain. Ada juga caranya dengan menggunakan tagging. Tadi kita gak bahas tentang tagging Tapi teman-teman nanti bisa search sendiri Git tag itu bisa dilihat disini Tentang kalau kita download software kan kadang ada V100, V101 dan seterusnya Itu sebenarnya dibuat dengan menggunakan git tag Itu ada proses tersendirinya lah Nanti gak usah saya jelasin sekarang Karena ini sebenarnya gampang gampang cuman lebih baik teman-teman familiar dulu dengan git baru nanti teman-teman bisa nyobain pakai git tag tapi ada cara-cara seperti ini juga kemudian enaknya kalau kita pakai git tag biasanya kita bisa gini nih kita bikin tag di sini saya kasih new release kemudian saya bisa pilih tag nya belum ada saya ambil tag nya dari master create new tag on publish disini saya kasih titelnya releasing website DSC V100 nah disini biasanya kalau di git kita bisa ngasih list of features features kayak gini kemudian kita kasih bug fixesnya apa bug fixes jadi bug fixesnya itu kayak ada apa aja yang kita fix bugnya atau fitur baru apa ini buat apa Biasanya kalau kita ngomongin software kan ada development lifecycle. Kita develop, ngoding, kemudian setelah selesai kita release. Supaya orang nanti bisa pakai versi yang sudah di test dan versi yang sudah stabil. Nah ini mekanisme ini sebenarnya untuk ngerilis software. Jadi misalkan fiturnya GoFood, apalagi dan segala macam. Bug fixingnya adalah fix missing currency. on payment page. Misalnya kayak gini. Jadi orang bisa lihat, oh ketika ada versi itu ada apa aja sebenarnya. Ada fitur apa, dan kemudian ada bug fix apa. Jadi kita bisa bikin hal-hal seperti itu. Oh ini tag-nya belum ada. Tapi ini salah satu cara dokumentasi. Kita bisa bikin list of features, list of bug fixes, dan segala macam. Itu aja sih paling yang keinget di kepala saya sekarang. Oke Bang Imre. Berikut nih ada pertanyaan tapi agak out of the topic. Yang bertanya, Bang Imre bisa intern sampai ke SEDTU gimana cerita ya Bang? Oke, oke. Jadi dulu saya tuh search di sebenarnya di grup lab saya waktu di kampus, saya pernah ada orang yang nge-share tentang ada kesempatan intern di CERN kalau ada yang gak tau CERN, CERN itu kalau misal teman-teman pernah dengar istilah partikel Tuhan itu tempat dimana partikel Tuhan itu ditemukan itu sebenarnya panjang lah ceritanya tapi CERN itu laboratorium fisika partikel terbesar di dunia dan waktu itu ada yang ngepost lowongan internnya, kemudian saya coba apply dan saya apply dan ternyata masuk kualifikasi Dan kemudian ternyata waktu itu CERN itu lagi kolaborasi pertama dengan LIPI waktu itu, LIPI Lembaga Ilmu Pengetahuan Indonesia. Dan kemudian LIPI lah yang akhirnya menyaring orang-orang itu, ada sekian orang, dipilih oleh LIPI tiga orang. Dan waktu itu saya berangkat. Jadi emang prosesnya daftar aplikasi, kemudian berangkat ke sana dan ikut intern tiga bulan. Saya juga turun ke bawah ngelihat akselerator partikel yang gede itu, yang Mungkin kalau teman-teman ada yang pernah nonton film Angel and Demon ya, itu ada kan. Nah sebenarnya itu sama persis bentukannya kayak gitu. Jadi ya intern dan kemudian balik lagi kuliah. Itu waktu itu bisa. Sederhana itu aja sih. Jadi keren banget ya Bang Ibrahim bisa intern di sana ya. Ya thank you, thank you. pertanyaan berikutnya, Bang Umreh bagaimana jika saya check out ke commit sebelumnya lalu saya new commit disitu apakah saya bisa balik ke commit master saya sebelum check out? Apakah saya bisa balik ke commit master saya yang gimana? Ulang pertanyaan terakhir ya. Pertanyaan terakhirnya boleh diulang gak? Kalimat terakhirnya. Banyama, apakah saya bisa balik ke commit master sebelum saya check out? Oh, bisa lah. Bisa dong, masa enggak. Ini saya di master ya. Saya check out ke branch ini. sekarang saya head saya disini nih jadi kita ngomonginnya bukan master lagi tapi kita ngomonginnya head ini website DSC ya nah ini website DSC nah sekarang teman-teman lihat bahwa disini tuh bukan master namanya tapi disini adalah commit hash yang kita baru bikin yang kita check out barusan kemudian kalau saya bikin tambahin kalau saya pengen nambahin sesuatu disini misalkan saya tambahin run.sh sama ada git status ada runsh, git add saya bisa commit, git commit minm, add runsh sekarang kita bisa lihat disini bahwa dari sini dia kayak semacam ngebikin branch baru tapi nama branchnya head, itu bisa juga terus kalau bisa nggak kita balik ke branch master kita sebelum commit ya bisa, cara paling gampang mana masternya ini klik sekarang kita udah di master, gimana caranya kita balik lagi ke yang tadi yang head, bisa nggak ya? hilang ya, hilang, kayaknya itu temporary, jadi ya kalau tertanyaannya bisa nggak kita balik kemana-mana? ya bisa, kalau kita punya commit hash-nya di sini, saya ambil ini commit hash ini, saya kemudian check out gco Ya saya bisa balik ke mana aja, jadi itu enaknya kita pakai git atau git switch lah. Ini dia bilang, dia teriak nih jangan pakai git checkout lagi dong, pakainya git switch. Ya bisa juga sebenarnya. Macem-macem lah, git switch, git switch apa, git branch, git checkout, ya bisa. Jadi selama ada kayak gini, saya bisa balik ke manapun saya suka. Oke. Ya ini untuk pertanyaan berikutnya, Pak Imre. Saya pernah nanya, katanya Google nggak pakai Git, tapi pakai version ketua mereka sendiri. Maksudnya itu gimana ya, Pak? Mereka bilang, mereka memang tidak pakai Git, mereka punya versioning control sendiri. Kenapa mereka punya versioning control sendiri? Karena workflow mereka itu pertama sedikit berbeda. Ini yang saya ketahui ya, saya bukan orang Google. Saya pernah datang ke sana dan mereka bilang bahwa menurut mereka Git itu nggak scalable untuk ukuran Google. Jadi intinya kayak gitu. Jadi kalau company-company gede itu mereka walaupun toolsnya itu udah gede banget di open source itu belum tentu cocok untuk mereka. Jadi makanya Google pun bilang ya kita punya tools sendiri karena menurut kita Git itu nggak scalable. Begitu juga dengan Facebook yang punya tools versioning control sendiri. Saya lupa namanya apa. Jadi Facebook itu kalau nggak salah punya sendiri. Juga SVN atau apa ya? Saya lupa lah. Tapi Facebook punya sendiri. Ya mereka pun sebenarnya juga bilang hal yang sama. Kita juga punya kebutuhan tersendiri lah. Makanya kita bikin sendiri. Jadi kira-kira kayak gitu alasannya. Ya ini sudah kelihatan di slidernya ya. Oh iya betul dari mana tadi Oh yang sekarang yang bawah ya Bang ide yang enak atur git itu biasanya apa saya biasanya pakai VS Code dan golen kalau karena saya ngoding go tapi majoriti semua ide itu gitnya udah bisa di konflik semua kalau mau jadi enggak ada masalah sih tapi kalau fitur dasar tuh udah ada semua cuman kalau saya sih lebih suka Emang pake source 3 ya Gak tau enak aja pake source 3 Bang cara mundurin versi git dari commit sebelumnya Selain check out gimana ya Mundurin versi git Ya check out aja sih Saya gak tau ada cara lain Mungkin git switch Tapi setahu saya switch itu untuk ngeganti branch Tapi git check out aja sih biasanya Git check out commit atau git check out tag Ada ekstensi git yang bisa direkomendasikan? Tidak Oh saya tidak pakai jadi saya enggak tahu gitu ada pertanyaan lagi itu boleh dimark answer aja Katanya kita bisa hosting web yang udah ada kita buat ke git ya emang bener ya bisa beberapa fit beberapa beberapa kayak apa sih namanya netlify paling gak yang pernah saya cobain itu dia bisa integrasi dengan git jadi nanti dia yang akan nge-pull codingan gitnya untuk di deploy. Bisa kita buat hosting web yang udah kita buat ke git? Ya bisa, bisa. Ya bisa, ada banyak kok. Mau nanya kak ada ekstensi git? Nah itu udah ya, ekstensi git udah ya. Saya nggak tahu jawabannya. Izin bertanya? Tanya aja nggak usah izin-izin. Anggap saya punya repo di dalam repo di lokal. Bagaimana cara kita push satu repo tapi semua git repo yang ada di dalamnya ikut dipush? Di dalamnya ikut dipush. Oh. Pokoknya kalau jadi ada konsep submodule mungkin lebih ke arah sana mungkin bisa pakai konsep submodule jadi nanti di dalam satu repo ada repo-repo git lagi di dalamnya kalau kita pengen nge-push nanti kita bisa update juga submodule nya mungkin lebih ke arah sana saran saya coba baca submodule aja mudah-mudahan menjawab ah Apa bisa mengganti user dan email di git? Jika bisa bagaimana? Bisa, kayak tadi, git config global. Buka git cheat sheet, cari komennya git config set email sama git config set nama dan segala macam. Itu bisa diganti. Bahkan untuk per project pun juga bisa. Jadi nggak harus global config-nya, config-nya bisa untuk per project. Gitu ya, apa bisa mengganti. Apa referensi belajar git untuk pemula? Saran saya tadi, Yang saya tahu tuh kayaknya websitenya web programming unpass ada ngebahas git tapi tapi itu versi niat ya kalau saya tuh biasanya di YouTube saya tuh emang versi yang nggak niat ngejarnya jadi saya nggak pernah bikin slide karena habis waktu buat bikin slide jadi makanya saya lebih suka dengan cara yang seperti tadi mudah-mudahan lebih kelihatan implementasinya kayak gimana tapi ada banyak dokumentasi git yang paling penting yang bisa dibaca untuk belajar git referensinya kemudian ya itu sih googling aja sebenarnya dalam dunia tech apa saja yang menggunakan git? semuanya easy answer kalau sudah terlanjur merge tapi ternyata coding-nya masih ada error, cara nge-unmerge nya gimana ya kita ada command namanya git reset atau git revert, nah itu bisa dipakai cari tahu aja dua itu, git reset, min-min hard, git reset, min-min soft, kalau nggak salah, sama git revert, itu bisa dipakai Bang mau nanya, tapi biasanya ya kalau seandainya ada error itu bukan codingannya bukan di iniin, bukan di refer, tapi ya di fix aja. Nggak masalah walaupun ada commit yang error ya that's okay. Nggak perlu commit yang error tadi di update lagi. Karena kalau seandainya itu dihapus bisa jadi itu malah nengacauin history di git orang lain. Kadang ada komen yang agak berbahaya namanya git push minforce, nah itu rada berbahaya jadi nggak bisa sembarangan juga makanya. Oke. Bang mau nanya kita bisa install git di laptop kita? Eh tadi itu belum tuh yang terakhir tuh Apa tadi itu pertanyaannya? Boleh dibalikin nggak? Yang paling terakhir ke pencet Oh hilang, thank you Nggak bisa dimunculin lagi ya? Waduh sayang sekali. Ya udahlah saya jawab dulu yang ini. Bang semisal terjadi kesalahan merge gimana cara yang baik untuk rollback? Ya tadi udah saya jawab juga ya. Git reset, git refer. Atau sebenarnya bikin komitan baru aja. Ya kalau kesalahan merge mungkin lebih cocok untuk git reset atau git refer. Kalau mau kayak gitu. Jadi git refer itu untuk ngebalikin komitannya ke komit yang sebelumnya. Atau komitan tertentu. Itu bisa kita pilih. Bang cara dapetin achievement Achievement git itu gimana ya Cara achievement git Saya gak tau nih maksudnya Cara dapetin achievement git itu maksudnya gimana Achievement ini apa ya Saya juga gak ngerti nih pertanyaannya Mungkin boleh ditanyain lagi Di elaborasi pertanyaannya seperti apa Gak ada pertanyaan lagi ya Kalau gak ada ini ada beberapa pertanyaan juga nih Yang bagus di youtube Bahas tentang cherry pick Katanya Ya nanti lah, googling aja dulu Terima kasih Bang, apa setiap selesai ngerjain satu case Apa harus selalu git commit? Nah ini pertanyaan bagus Apa ya? Jadi dia nanya, tergantung sebenarnya. Jadi jangan kalau seandainya teman-teman mau nge-git commit, nggak apa-apa. Tapi asal jangan nanti masih satu commit itu terlalu besar, karena jadi susah nge-track div-nya. Jadi kalau mau ada satu use case, misalkan teman-teman habis nambahin satu test case dan implementasinya, itu bolehlah di-commit. Tapi jangan nanti cuma nambahin satu line, terus di-commit, nambahin satu line, di-commit. Itu terlalu. Tapi bisa per fitur dan set of test cases. Kapan milih rebase atau merge? Nah ini pertanyaan bagus. Tadi kan saya juga bahas tentang git rebase dan merge. Git rebase itu kalau kita mau, kalau tidak apa-apa kita merubah git history. Jadi kalau tadi kita pakai git rebase itu sebenarnya commit hash nya berubah. Tapi kalau kita pakai git merge, nah bentar saya balik lagi git rebase. Git rebase itu tadi git hash nya berubah. Dan yang kedua adalah dia itu sebenarnya kalau seandainya di master itu ada 5 commit, kalau nggak salah, di branch kita ada 1, dia akan ngecek ke satu-satu commit. Setiap commit di master itu dia akan ngecek. Jadi kalau seandainya di masing-masing commit itu dia ketemu konflik, kita harus ngefix konfliknya satu-satu. Jadi kalau seandainya 5 commit itu ada konflik, kita 5 kali ngebenerin konfliknya selama proses rebasing. Tapi kalau kita pakai git merge, kita cukup merge sekali, kalau ada konflik kita ngefixnya sekali. Kira-kira kayak gitu. Jadi atur aja. Tergantung selera sih sebenarnya. Ada yang nanya, mas kalau di Gojek remote repository-nya pakai apa? GitHub, GitLab, Azure, DevOps atau self-hosted? Pakai GitLab. Foto pas jadi CEO? Berdasarkan pengalaman, kesalahan yang sering terjadi ketika menggunakan Git apa? Apa ya kesalahan yang paling sering terjadi ketika menggunakan Git? Saya juga nggak... Mungkin commit message, commit messagenya nggak jelas, itu sering banget sih, bahkan saya pun sampai sekarang masih kayak gitu. Itu sih paling convention sih, tapi kadang orang tuh punya convention berbeda-beda, nah mungkin ada baiknya kalau kita mau bekerja dalam tim, itu kita samain dulu convention commit yang mau kita pakai seperti apa, tagging, branching kita mau kayak gimana. jadi kayak gitu lah terus ada pertanyaan lagi apa bedanya pakai git pool origin ke branch baru gitu dibandingkan tadi git merge ntar apa beda pakai git pool origin master ke branch baru gitu dibanding yang Mas bilang git merge master di branch baru git merge master bedanya bedanya yang satu kita lewat Cloud yang satu lagi kita enggak lewat Cloud itu aja sebenarnya tapi sebenarnya sama aja sama-sama nge-merge pada akhirnya yang satu kita lewat Cloud bisa dilihat semua orang tapi yang satu lagi di lokal doang cara ketik Oh tadi ada yang ada yang nanya tadi saya ngepost tuh muncul password ya itu karena saya pakai pakai SSH key Jadi untuk autentikasi ke git itu ada caranya pakai SSH atau pakai HTTPS. Kalau pakai HTTPS nanti kita masukin username password GitHub. Tapi kalau kita pakai SSH kita pakai SSH key. Nah SSH key saya ini ke protect makanya tadi pas saya nge-push itu ada passwordnya. Gitu ya. Kayaknya masih ada waktu nggak? Atau mau kita udahi aja? Karena dari DSC nya sudah selesai juga kan sebenarnya. Masih ada waktu sekitar 20 menit. Ya nggak apa-apa kita lanjutin aja ya. Biar yang ikutan di DSC pun juga dapat ini beberapa hal. Bentar saya coba. Bentar, bentar, bentar. Oh belum ada. Ya udah deh. saya ganti, bentar ya ada pertanyaan lagi Oh ini ada pertanyaan menarik nih, kalau misalkan di master sudah ada empat fitur yang di-commit, tapi ternyata ada satu fitur yang nggak jadi dirilis, itu gimana? Agak susah sih, sebenarnya ya mau nggak mau ya commit-an tadi kita revert sebenarnya, tapi kalau kita nge-revert dia ada di tengah-tengah otomatis coding-an yang sebelumnya mungkin bisa berubah. Jadi caranya ya mau nggak mau kita mesti pakai fitur flag buat nge-disable fitur tadi atau kita hapus, bikin commit baru kita hapus, kayak gitu. Mau gak mau sih. Makanya untuk menghindari cara-cara seperti itu sebenarnya ada mekanismenya juga. Kita pakai release branch biasanya. Jadi dari ketika kita udah. Nanti teman-teman bisa baca trunk based development. Itu git flow juga. Nanti kalau kita udah mau release ke production. Kita bikin branch release. Nanti fitur-fitur yang mau kita masukin itu kita cherry pick dari branch master tadi ke branch release. Nah itu ada mekanismenya sendiri. Ada yang nanya salah nggak, branch dipakai buat production di server? Jadi biasanya kalau branch itu dipakai untuk development. Jarang banget branch itu dipakai untuk fitur branch ya, sorry. Fitur branch dipakai untuk development. Tapi kalau kita ngikutin trunk-based development, itu yang di-deploy itu selalu dari branch master atau release, tergantung trunk-basednya seperti apa. Tapi jarang banget yang di production itu, kalau di production itu pasti selalu pakai master branch atau release branch. Apa itu release branch? Ya cuma semacam penamaan aja yang digunakan, branch yang digunakan untuk kebutuhan release ke production. Namanya yang sama kayak tadi, bisa macam-macam lah sesuka kita. Tapi dia cuma pada dasarnya dia cuma git branch aja. Apa lagi ya? Nah ini ada yang nanya juga nih, di Git Terminal bisa lihat review kode yang mau di-merge ke master nggak? Nggak bisa, biasanya kalau review kode itu pasti either di GitLab, di GitHub, atau di Bitbucket. Contoh commit yang best practice itu apa? Tidak ada yang best practice sebenarnya selama orang ngerti, tapi kalau mau lihat yang standar itu bisa pakai semantic commit yang tadi saya lihatin. Saya tidak pernah pakai SVN, ada pertanyaan pernah pakai SVN atau tidak, saya tidak pernah pakai. Ada ini pertanyaannya, gimana caranya biar folder log tidak masuk ke git. Nah ini mungkin bagus juga pertanyaannya, tadi kita tidak bahas. Jadi saya boleh share screen lagi. Boleh digedein aja gak apa-apa. Nah jadi di git itu ada konsep namanya git ignore. Jadi nih di git ignore itu adalah sebuah file yang bisa kita tambahin ke repo kita. Supaya nanti file-file tertentu itu gak ikutan ke push atau gak ikutan ke commit. Ini teman-teman bisa pakai git ignore. Kalau pengen tahu git ignore masing-masing bahasa itu bisa search spesifik. Git ignore go atau git ignore node.js. itu otomatis sudah ada dan ini biasanya tinggal dikopas doang ini standarnya tinggal kopas tapi kalau ada kebutuhan lain itu bisa ditambah-tambahin ini nanti ditaruh di di folder paling depan itu aja sih ini masih banyak pertanyaan sih sebenarnya ini ada yang nanya lagi nih Mas Imre, untuk Git itu apakah komen untuk merge lebih dari satu branch langsung ke master? Permisi, bentar saya ulang ya. Untuk Git itu apakah ada komen untuk merge lebih dari satu branch langsung ke master atau memang harus merge satu-satu? Ya merge itu cuma untuk merge dari satu branch ke satu destinasi. Jadi nggak bisa langsung merge beberapa branch itu langsung ke master, nggak bisa. Gitu ya. Best Practice kalau Fix Bug di Branch Feature setelah Merge ke Master yang sudah di Production Biasanya sih bikin Branch Hotfix, nah jadi ini konsep lagi untuk ngefix bug yang ada di production itu kita biasanya workflow-nya agak beda kita nggak bikin fitur Branch kemudian kita masukin ke Branch Develop dan segala macam tapi kita bisa bikin Hotfix Branch dari Master nanti search saja Hotfix Hotfix Branch Atau kalau mau boleh share screen saya lagi. Nah, thank you. Jadi ini. Nah, teman-teman bisa lihat. Ini master ya, ini kan di production. Jadi kalau seandainya ada bug di production, itu teman-teman bisa langsung bikin branch hotfix. Fix di sini. Kemudian di-merge ke develop. Dan kemudian di-merge juga ke branch master. Supaya. Bug ini masuk ke production dan juga masuk ke development. Jadi itu konsepnya untuk hotfix. Kalau kita pakai git. Ini salah satu cara. Kalau ini kan kita pakai fitur branch workflow ya. Tapi ada juga yang pakai trunk base yang tadi saya sebutin. Itu apa makhluknya cari tahu aja sendiri setelah ini. Tapi kalau kita pakai git workflow itu kita bisa caranya seperti ini. Ada yang bilang, bingung nih katanya, eh mana sih, bingung git rm sama rm. Kalau rm itu ngehapus file di Linux ya, kalau git rm itu kalau nggak salah ngehapus apa gitu di git. Pokoknya perbedaannya itu aja sebenarnya. Ada pertanyaan terakhir, hotfix branch itu kalau TDD maksudnya, hotfix branch itu kalau trunk based development, hotfix branch itu kalau trunk based aja atau semua flow bisa? Bisa aja semua flow, gak masalah. Jadi kalau kita pakai trunk based kita bisa pakai hotfix. Kalau kita... mau pakai yang lain kita bisa juga outfix tapi kalau udah trunk base biasanya orang langsung ke master aja langsung push itu kalau masternya udah bisa langsung selalu di deploy ke production ya oke habis pertanyaan dari saya mungkin waktunya udah hampir habis juga jadi terima kasih dari saya itu aja oke Bang Imrek untuk pertanyaan yang tadi yang achievement itu jadi tadi maksudnya itu di profile github memang emir itu kan ada achievementnya oh iya iya iya itu karena kebetulan saya contribute itu achievement apa ya jadi github itu punya beberapa beberapa batch itu batch sebenarnya jadi ada batch yang ini batch saya itu namanya articode fault contributor jadi github itu beberapa waktu yang lalu tahun lalu itu mereka bikin program archive program jadi Yang mereka lakukan itu banyak repo yang mereka archive, mereka simpan di kutub utara dalam bentuk format file tertentu. Nah itu masuk ke artik code file. Nah semua codingan yang masuk ke sana, semua repo yang masuk ke sana itu. itu kontributornya dikasih batch. Nah sebenarnya itu aja sih. Ada banyak macam achievement ini ada apa lagi gitu kalau nggak salah. Macem-macem search saja GitHub achievement atau GitHub batch. Kira-kira gitu. Oke karena waktunya sudah habis juga jadi kita mau masuk ke penutup. Jadi saya ucapkan sampai jumpa di agenda acara kami selanjutnya. Dan terima kasih kepada Bang Indre dan peserta yang telah hadir untuk acara hari ini. Mohon maaf jika ada salah kata dan kekurangan. Oke. Akhir kata kami ucapkan terima kasih. Oke, terima kasih ya semuanya ya. Saya izin pamit sekalian ya. Ya. Oke, sudah selesai. Terima kasih yang udah nonton di Youtube Saya gak tau yang nonton di Youtube lebih banyak Daripada yang nonton di DSC atau enggak Tapi itu aja mudah-mudahan membantu Buat yang udah nonton Itu basic banget sebenernya Mudah-mudahan dari sana teman-teman jadi tau Kalau ada yang mau support Nah mumpung closing nih Tadi ada yang nanya, Bang Sawerianya gak muncul Nah mana nih gue munculin Yang mau support, gue di Saweria Tuh langsung sekarang Udah itu aja Terima kasih semuanya buat yang udah nonton Minggu pagi, Sabtu pagi Eh minggu pagi ya hari ini Minggu depan tuh ada lagi Tapi ngebahas cloud bareng DSC Aduh gue lupa DSC mana Jadi yaudah lah nanti ikutin aja Mungkin gue live streaming lagi Karena gak tau apakah yang nonton di DSC tuh rame atau enggak Jadi ya daripada sayang Jadi gue stream juga ke Youtube gue Udah itu aja terima kasih buat yang udah nonton Jangan lupa shower Asik tadi ada yang ini enggak? gue jangan-jangan ada yang sawir tapi belum muncul notifnya oh belum, mungkin mention nih jangan-jangan ngumpung sambil ngelihat sawirnya ada atau enggak kalau seandainya ada teman-teman yang punya pertanyaan silahkan ditanyain aja sambil gue ngecek ada komen-komen enggak nih Oh belum ada lagi, baru Budi, terima kasih ya Budi ya Thanks Om, oke kalau gak ada Gue sudahi aja sekalian Terima kasih buat yang Udah nonton Sampai ketemu lagi di live streaming berikutnya Assalamualaikum warahmatullahi wabarakatuh Jangan lupa support gue terus di support.imrenagi.com Atau di saweria Atau jangan lupa comment, like, dan subscribe Wasik, yuk assalamualaikum warahmatullahi wabarakatuh Selamat berakhir pekan