Introduction Git & How To Collaborate With GitIntroduction Git & How To Collaborate With Git
About me
• Fullname : Joko Susilo
• Nickname : jsusilo
• Jobs : Student PENS and backend
developer (available for hiring)
• Email : susilo.j8@gmail.com
• Facebook :
https://web.facebook.com/jokoKikoSusilo
• Linkedin : https://id.linkedin.com/in/jsusilo1
list materi
• Day 0Day 0
• - introduction to git, github and open source collabs- introduction to git, github and open source collabs
• - setup and initialization- setup and initialization
• - workflow- workflow
• - commit- commit
• - log- log
• - checkout and branch- checkout and branch
• - manajemen konflik- manajemen konflik
• Day 1Day 1
• - pushing changes- pushing changes
• - update and merge- update and merge
• - pull request- pull request
introduce to git
• Git adalah salah satu dari perkakas versioning control.
• Git paling populer dibanding yang lain, dipakai buat
ngurus kernel Linux juga. Versioning control itu
digunakan untuk memetakan perubahan2 dari proyek
kita.
• Dari tiap2 versi itu, kita bisa bolak-balik dengan mudah.
• Lompat dari versi satu ke versi lain tanpa takut
manajemen berkasnya berantakan.
• Selain itu, buat kolaborasi. Di sini, kita pakai github.
Lainnya, ada gitlab, bitbucket.
setup git in Linux
• sudo add-apt-repository ppa:git-core/ppa -y
• sudo apt-get update
• sudo apt-get install git -y
• git --version (check your version GIT)
setup git in windows
• just download git installer https://git-
scm.com/download/win
• klik next next wae :D
• kemudian jalankan git --version
setup git in mac
• download git installer in https://git-
scm.com/download/mac
• klik next next wae :D
• kemudian jalankan git --version
initialization
• please config your git in local machine
• git config --global user.name "Nama Saya"
• git config --global user.email "email@saya.com"
• cek your git config
• git config user.name
• git config user.email
initialize in your project
• create direktory ex: gitklas
• change your directory
• type git init
• cek your status with git status
• create berkas misal puisi1.txt
workflow
• Flow dari git itu garis
besarnya ada 3.
• 1. WORKING
DIRECTORY
• 2. STAGE
• 3. HEAD
Alur
• Alur
• dirty ­> stage ­> HEAD / commit ­>
• dirty ­> stage ­> HEAD / commit
• dan setereusnya.
• Contoh alurnya.
• 1. tulis puisi1.txt, simpan
• 2. tampung ke stage
• 3. commit
• 4. sunting puisi1.txt, simpan
• 5. tampung ke stage
• 6. commit.
git log
• Setiap commit mempunyai identitas, berupa hash yaitu
angka unik
• git log fungsinya untuk melihat perubahan­perubahan
yang telah kita lakukan
• hash commit tidak perlu semua di tulis cukup 4 atau 6
digit saja dari depan
git checkout
• fungsinya untuk rollback commit dan berpindah branch
• kalo mau checkout misal pake perintah
• git checkout c9223379f0
• git checkout ­b <new­branch­name>
• git branch ­D master
• hash yang di pakai untuk checkout minimal 4 digit dari
depan
Branch
•branch adalah cabang dari sebuah proyek
•mengapa di perlukan branch ? karena untuk
pengembangan fitur tanpa mengedit file master
•Saat menginisiasi proyek awal, kita sellalu bermula dari
master
•Anggap saja begini master itu cabang pengembangan
utama, yang resmi2 dan bakal dirilis, ada di sini semua.
•Kita bikin cabang baru supaya kita fokus di situ,
•Biarkan master bersih
merge
• Nah, ceritanya ini, kita pngen gabungin dua cabang ini
• Kita pengen bawa fitur baru di cabang baitkedua k
'master'
• Sebelum kita gabungin, ada baiknya kita cek ricek dulu,
apa saja
• perintanya git diff
• contoh : git diff master
• git diff cabang1 cabang2
• git diff 8dda52 44ed4e832
• git diff cabang 8dda5ae
• Yang ada simbol + itu menandakan perubahannya.
• + artinya ada penambahan brais
• ­ artinya pengurangan.
• Maksudnya, dibanding master , cabang sekarnag ada
• penambahan yang plus plus tersebut.
• diff bisa digunakan antar cabang dan antar commit juga.
• git diff cabang1 cabang2
• git diff 8dda52 44ed4e832
• git diff cabang 8dda5ae
Git Merge
• Sebelum merge, kita mesti tetapkan perspektif.
• Yang mana digabung kemana?
• baitkedua dibawa ke master atau sebaliknya?
• Jika baitkedua dibawa ke master , maka kita pindah ke
master
• kemudian merge
manajemen konflik
•1. bikin dir baru, mkdir gitkonflik , masuk ke dalam
•2. git init
•3. edit berkas1.txt, isikan 3 baris, isinya,
halo
malam
surabaya
•4. simpan, commit, pesan commit bebas
•5. sunting lagi berkasnya, baris kedua ganti kata siap kemudian simpan, commit, pesan
commit bebas
•6. sekarang dari git log, kita punya 2 commit
•7. checkout ke commit pertama, bikin cabang baru, namanya,
halo
•8. suting berkas, baris kedua, ganti dengan kata halo , simpan, commit.
•Konflik terjadi apa bila ada baris yang sama edit oleh cabang yang
berbeda.
•Seperit yang kita tahu tadi,
•baris kedua itu edit oleh cabang yang berbeda.
•berbeda di masing2 cabang apabila ada perbedaan di baris yang
sama, maka konflik.
•apabila perubahannya berada di baris yang berbeda, tidak akan
konflik. git cukup pintar buat deteksi itu.
•Tapi tidak cukup pintar untuk memutuskan, manakah yang benar,
•siap , atau halo ?
git konflik
• Horeee KONFLIK
• Git itu memberi tahu kita, yang mana sih yang konflik?
• Mari kita buka berkasnya dengan teks editor masing2
• Di situ ada karakter tmabaan yang aneh
• <<<<<<<<
• ==========
• >>>>>>>>>>
• ada tiga,
• <<<
• ===
• >>>>
• Itu petunjuk dari git, si git ini nanya, yang mana sih yang
• bener? atas atau bawah?
• Itu tugas kita yang miih
• kita singkirin yang salah, kita pilih yang benar
•Kasih aja pesannya, misal, 'Resolve conflict.'
•Selesai
•Aman.
•Sekarang, statusnya, kita berada di cabang master.
•Perubahan dari cabang halo sudah masuk.
•Di dunia nyata (saat ngoding beneran), bisa jadi 1 berkas
ada banyak konflik
•1 berkas ada banyak pasangan <<<===>>>>
git stash
•misal direktori kerja kita dalam kondiis bersih
•saya mau sunting tuh berkas1.txt
•saya tambahkan 1 baris lagi. simpan
•terus saya gak yakin, gak mau bawa ke stage dulu, apa lagi komit. tapi gak yakin juga buat buang perubahannya.
•saya sudah sunting, tapi saya mau coba lagi nih dari awal.
•jadi saya simpan perubahannya itu ke stash list
•1. sunting
•2. git stash , perubahan dicatat, dimasukkan ke stash list,
•direktori direset ulang, bersih lagi
•3. git status , perubahannya gak ada? kenapa? dicatatnya ke stash
•4. git stash list, lihat daftar perubahaan yang kita catat.
•Misal, kita sudha yakin, ah, perubahaan yang tadi aja dah yang
•kita pakai.
•maka, git stash apply
•terus lihat statusnya, git status
•Maka perubahan yang tersimpan di stash tadi kebawa ke direktori kita
•Sekarang direktori kita kotor,
•siap di commit.
kolaborasi
• Kita mulai dari mengkloning sebuah proyek.
• Asumsi saya sekarang, masing2 kita sudah bisa main git
di
• lokal, tanpa kolaborasi.
• Dari direktori kerja konflik tadi, coba pak bapak git
remote
• ­v
• git clone https://github.com/winardiaris/pabrikon.git
• lakukan di direktori di luar konflik tadi.
• Anggaplah kita ingin berkontribusi ke proyek tersebut.
• Perintahnya adalah git clone
• Contoh (tapi coba dilakukan)
• git clone https://github.com/winardiaris/pabrikon.git
• lakukan di direktori di luar konflik tadi.
• Supaya independen
• Perintah tersebut akan menkloning proyek ke lokal kita.
• Sebagai sisipan, pabrikon itu perkakas yang dibikin sama
pak Aris Winardi untuk memanajemen proyek ikon.
• Ikon Tebu di Tambora, dibantu oleh perkakas tersebut.
clone proyek
• mari masuk ke direktori proyeknya
• cd pabrikon
• Lihat lognya, git log
• Di sana tercatat perubahan2 yang dilakukan oleh pak
Aris.
• Nah, tugas kita adalah berkontribusi
• Bagaimana supaya perubahan yang kita lakukan masuk
ke komit
• Mari kita edit README.md (http://README.md)
git remote
• origin https://github.com/winardiaris/pabrikon.git
• (fetch)
• origin https://github.com/winardiaris/pabrikon.git
• (push)
• di situ ada 3 bagian
• origin
• alamat
• hak
pastikan nama kita nampang di git log
• Nama kita sudah nambah di daftar git log
• Dari sini, mari kita bikin cabang baru
• git checkout ­b fixreadme
• lalu kita login ke akun github kita, kemudian kita kunjungi
akun github pak aris
• https://github.com/winardiaris/pabrikon
• kemudian di sebelah kanan ada tombol fork
• Jadi alurnya, setelah ini
• Kita dorong cabang fixreadme ke repo kita
• Kemudian kita bikin Pull Request ke repo pak Aris.
• Mari kita tambahkan dulu alamat repo kita
• git remote add jsusilo
• https://github.com/jsusilo/pabrikon.git
• jsusilo yang pertama diganti saja dengan nama bebas,
nama yang mewakili repo tersebut.
• cek dengan git remote ­v
push repo
• Kita dorong ke repo kita, bukan pak Aris.
• git push jsusilo fixreadme
• Artinya, kita mendorong cabang fixreadme ke jsusilo
• masukkan username dan password github kita
Create Pull Request
• Di pojok kanan, ada tombol New pull requests
• isikan deskripsi tentang PR kita kalo sudah silakan di
kirim
• pull anda akan masuk ke
https://github.com/winardiaris/pabrikon/pulls
Git Student pack
• https://education.github.com/pack
Thanks

Introducing git

  • 1.
    Introduction Git &How To Collaborate With GitIntroduction Git & How To Collaborate With Git
  • 2.
    About me • Fullname: Joko Susilo • Nickname : jsusilo • Jobs : Student PENS and backend developer (available for hiring) • Email : susilo.j8@gmail.com • Facebook : https://web.facebook.com/jokoKikoSusilo • Linkedin : https://id.linkedin.com/in/jsusilo1
  • 3.
    list materi • Day0Day 0 • - introduction to git, github and open source collabs- introduction to git, github and open source collabs • - setup and initialization- setup and initialization • - workflow- workflow • - commit- commit • - log- log • - checkout and branch- checkout and branch • - manajemen konflik- manajemen konflik • Day 1Day 1 • - pushing changes- pushing changes • - update and merge- update and merge • - pull request- pull request
  • 4.
    introduce to git •Git adalah salah satu dari perkakas versioning control. • Git paling populer dibanding yang lain, dipakai buat ngurus kernel Linux juga. Versioning control itu digunakan untuk memetakan perubahan2 dari proyek kita. • Dari tiap2 versi itu, kita bisa bolak-balik dengan mudah. • Lompat dari versi satu ke versi lain tanpa takut manajemen berkasnya berantakan. • Selain itu, buat kolaborasi. Di sini, kita pakai github. Lainnya, ada gitlab, bitbucket.
  • 5.
    setup git inLinux • sudo add-apt-repository ppa:git-core/ppa -y • sudo apt-get update • sudo apt-get install git -y • git --version (check your version GIT)
  • 6.
    setup git inwindows • just download git installer https://git- scm.com/download/win • klik next next wae :D • kemudian jalankan git --version
  • 7.
    setup git inmac • download git installer in https://git- scm.com/download/mac • klik next next wae :D • kemudian jalankan git --version
  • 8.
    initialization • please configyour git in local machine • git config --global user.name "Nama Saya" • git config --global user.email "email@saya.com" • cek your git config • git config user.name • git config user.email
  • 9.
    initialize in yourproject • create direktory ex: gitklas • change your directory • type git init • cek your status with git status • create berkas misal puisi1.txt
  • 10.
    workflow • Flow darigit itu garis besarnya ada 3. • 1. WORKING DIRECTORY • 2. STAGE • 3. HEAD
  • 11.
    Alur • Alur • dirty­> stage ­> HEAD / commit ­> • dirty ­> stage ­> HEAD / commit • dan setereusnya. • Contoh alurnya. • 1. tulis puisi1.txt, simpan • 2. tampung ke stage • 3. commit • 4. sunting puisi1.txt, simpan • 5. tampung ke stage • 6. commit.
  • 12.
    git log • Setiapcommit mempunyai identitas, berupa hash yaitu angka unik • git log fungsinya untuk melihat perubahan­perubahan yang telah kita lakukan • hash commit tidak perlu semua di tulis cukup 4 atau 6 digit saja dari depan
  • 13.
    git checkout • fungsinyauntuk rollback commit dan berpindah branch • kalo mau checkout misal pake perintah • git checkout c9223379f0 • git checkout ­b <new­branch­name> • git branch ­D master • hash yang di pakai untuk checkout minimal 4 digit dari depan
  • 14.
    Branch •branch adalah cabangdari sebuah proyek •mengapa di perlukan branch ? karena untuk pengembangan fitur tanpa mengedit file master •Saat menginisiasi proyek awal, kita sellalu bermula dari master •Anggap saja begini master itu cabang pengembangan utama, yang resmi2 dan bakal dirilis, ada di sini semua. •Kita bikin cabang baru supaya kita fokus di situ, •Biarkan master bersih
  • 15.
    merge • Nah, ceritanyaini, kita pngen gabungin dua cabang ini • Kita pengen bawa fitur baru di cabang baitkedua k 'master' • Sebelum kita gabungin, ada baiknya kita cek ricek dulu, apa saja • perintanya git diff • contoh : git diff master • git diff cabang1 cabang2 • git diff 8dda52 44ed4e832 • git diff cabang 8dda5ae
  • 16.
    • Yang adasimbol + itu menandakan perubahannya. • + artinya ada penambahan brais • ­ artinya pengurangan. • Maksudnya, dibanding master , cabang sekarnag ada • penambahan yang plus plus tersebut. • diff bisa digunakan antar cabang dan antar commit juga. • git diff cabang1 cabang2 • git diff 8dda52 44ed4e832 • git diff cabang 8dda5ae
  • 17.
    Git Merge • Sebelummerge, kita mesti tetapkan perspektif. • Yang mana digabung kemana? • baitkedua dibawa ke master atau sebaliknya? • Jika baitkedua dibawa ke master , maka kita pindah ke master • kemudian merge
  • 18.
    manajemen konflik •1. bikindir baru, mkdir gitkonflik , masuk ke dalam •2. git init •3. edit berkas1.txt, isikan 3 baris, isinya, halo malam surabaya •4. simpan, commit, pesan commit bebas •5. sunting lagi berkasnya, baris kedua ganti kata siap kemudian simpan, commit, pesan commit bebas •6. sekarang dari git log, kita punya 2 commit •7. checkout ke commit pertama, bikin cabang baru, namanya, halo •8. suting berkas, baris kedua, ganti dengan kata halo , simpan, commit.
  • 19.
    •Konflik terjadi apabila ada baris yang sama edit oleh cabang yang berbeda. •Seperit yang kita tahu tadi, •baris kedua itu edit oleh cabang yang berbeda. •berbeda di masing2 cabang apabila ada perbedaan di baris yang sama, maka konflik. •apabila perubahannya berada di baris yang berbeda, tidak akan konflik. git cukup pintar buat deteksi itu. •Tapi tidak cukup pintar untuk memutuskan, manakah yang benar, •siap , atau halo ?
  • 20.
    git konflik • HoreeeKONFLIK • Git itu memberi tahu kita, yang mana sih yang konflik? • Mari kita buka berkasnya dengan teks editor masing2
  • 21.
    • Di situada karakter tmabaan yang aneh • <<<<<<<< • ========== • >>>>>>>>>> • ada tiga, • <<< • === • >>>> • Itu petunjuk dari git, si git ini nanya, yang mana sih yang • bener? atas atau bawah? • Itu tugas kita yang miih • kita singkirin yang salah, kita pilih yang benar
  • 22.
    •Kasih aja pesannya,misal, 'Resolve conflict.' •Selesai •Aman. •Sekarang, statusnya, kita berada di cabang master. •Perubahan dari cabang halo sudah masuk. •Di dunia nyata (saat ngoding beneran), bisa jadi 1 berkas ada banyak konflik •1 berkas ada banyak pasangan <<<===>>>>
  • 23.
    git stash •misal direktorikerja kita dalam kondiis bersih •saya mau sunting tuh berkas1.txt •saya tambahkan 1 baris lagi. simpan •terus saya gak yakin, gak mau bawa ke stage dulu, apa lagi komit. tapi gak yakin juga buat buang perubahannya. •saya sudah sunting, tapi saya mau coba lagi nih dari awal. •jadi saya simpan perubahannya itu ke stash list •1. sunting •2. git stash , perubahan dicatat, dimasukkan ke stash list, •direktori direset ulang, bersih lagi •3. git status , perubahannya gak ada? kenapa? dicatatnya ke stash •4. git stash list, lihat daftar perubahaan yang kita catat. •Misal, kita sudha yakin, ah, perubahaan yang tadi aja dah yang •kita pakai. •maka, git stash apply •terus lihat statusnya, git status •Maka perubahan yang tersimpan di stash tadi kebawa ke direktori kita •Sekarang direktori kita kotor, •siap di commit.
  • 24.
    kolaborasi • Kita mulaidari mengkloning sebuah proyek. • Asumsi saya sekarang, masing2 kita sudah bisa main git di • lokal, tanpa kolaborasi. • Dari direktori kerja konflik tadi, coba pak bapak git remote • ­v • git clone https://github.com/winardiaris/pabrikon.git • lakukan di direktori di luar konflik tadi.
  • 25.
    • Anggaplah kitaingin berkontribusi ke proyek tersebut. • Perintahnya adalah git clone • Contoh (tapi coba dilakukan) • git clone https://github.com/winardiaris/pabrikon.git • lakukan di direktori di luar konflik tadi. • Supaya independen • Perintah tersebut akan menkloning proyek ke lokal kita. • Sebagai sisipan, pabrikon itu perkakas yang dibikin sama pak Aris Winardi untuk memanajemen proyek ikon. • Ikon Tebu di Tambora, dibantu oleh perkakas tersebut.
  • 26.
    clone proyek • marimasuk ke direktori proyeknya • cd pabrikon • Lihat lognya, git log • Di sana tercatat perubahan2 yang dilakukan oleh pak Aris. • Nah, tugas kita adalah berkontribusi • Bagaimana supaya perubahan yang kita lakukan masuk ke komit • Mari kita edit README.md (http://README.md)
  • 27.
    git remote • originhttps://github.com/winardiaris/pabrikon.git • (fetch) • origin https://github.com/winardiaris/pabrikon.git • (push) • di situ ada 3 bagian • origin • alamat • hak
  • 28.
    pastikan nama kitanampang di git log • Nama kita sudah nambah di daftar git log • Dari sini, mari kita bikin cabang baru • git checkout ­b fixreadme • lalu kita login ke akun github kita, kemudian kita kunjungi akun github pak aris • https://github.com/winardiaris/pabrikon • kemudian di sebelah kanan ada tombol fork
  • 29.
    • Jadi alurnya,setelah ini • Kita dorong cabang fixreadme ke repo kita • Kemudian kita bikin Pull Request ke repo pak Aris. • Mari kita tambahkan dulu alamat repo kita • git remote add jsusilo • https://github.com/jsusilo/pabrikon.git • jsusilo yang pertama diganti saja dengan nama bebas, nama yang mewakili repo tersebut. • cek dengan git remote ­v
  • 30.
    push repo • Kitadorong ke repo kita, bukan pak Aris. • git push jsusilo fixreadme • Artinya, kita mendorong cabang fixreadme ke jsusilo • masukkan username dan password github kita
  • 31.
    Create Pull Request •Di pojok kanan, ada tombol New pull requests • isikan deskripsi tentang PR kita kalo sudah silakan di kirim • pull anda akan masuk ke https://github.com/winardiaris/pabrikon/pulls
  • 32.
    Git Student pack •https://education.github.com/pack
  • 33.