{"id":24588247,"url":"https://github.com/hscstudio/belajar-git","last_synced_at":"2025-04-28T17:45:23.552Z","repository":{"id":39156271,"uuid":"259111859","full_name":"hscstudio/belajar-git","owner":"hscstudio","description":"Belajar Git Like Pro ","archived":false,"fork":false,"pushed_at":"2023-03-04T14:41:12.000Z","size":1420,"stargazers_count":11,"open_issues_count":15,"forks_count":22,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T11:41:38.839Z","etag":null,"topics":["git"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hscstudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-26T19:08:56.000Z","updated_at":"2025-01-15T16:09:30.000Z","dependencies_parsed_at":"2023-02-06T14:32:23.740Z","dependency_job_id":null,"html_url":"https://github.com/hscstudio/belajar-git","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hscstudio%2Fbelajar-git","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hscstudio%2Fbelajar-git/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hscstudio%2Fbelajar-git/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hscstudio%2Fbelajar-git/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hscstudio","download_url":"https://codeload.github.com/hscstudio/belajar-git/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251358331,"owners_count":21576878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git"],"created_at":"2025-01-24T07:14:42.395Z","updated_at":"2025-04-28T17:45:23.530Z","avatar_url":"https://github.com/hscstudio.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# belajar-git\n\nRepositori (repo) ini dibuat untuk memudahkan kamu dalam belajar menggunakan git dengan cara langsung praktek. Sekaligus belajar bagaimana cara berkontribusi pada projek yang menggunakan git atau dalam hal ini github.\n\n## Langkah Pertama!\n\nBeberapa hal yang harus kamu persiapkan sebelum memulai semua ini.\n\n### Instalasi Code Editor\n\nSilakan instalasi code editor favoritmu, namun jika kamu tidak punya pilihan maka saya sarankan menggunakan Visual Studio Code di https://code.visualstudio.com\n\n### Instalasi NodeJS \u0026 NPM\n\nOleh karena projek kita berbasis Javascript maka kamu perlu menginstalasi NodeJS \u0026 NPM. Software ini dapat kamu unduh pada https://nodejs.org/\n\nSilakan download dan instalasi sesuai petunjuk disana.\n\nUntuk memastikan bahwa node dan npm terinstalasi dengan baik pada PC-mu maka jalankan perintah berikut pada terminal:\n\n```\nnode -v\nnpm -v\n```\n\n### Instalasi Software Git\n\nSoftware git yang bisa kamu unduh di https://git-scm.com, silakan download sesuai dengan sistem operasi PCmu. Pada terminal atau command prompt (untuk kemudian saya hanya akan menyebut dengan terminal) jalankan perintah `git --version` untuk memastikan instalasi git berhasil.\n\n\u003e Jika perintah `git --version` gagal maka restart terminalmu sebelum menjalankan perintah ini.\n\n### Registrasi Akun Github\n\nJika belum punya akun github, maka silakan registrasi pada alamat: https://github.com/join.\n\nHubungan komputermu dengan github, sehingga kamu tidak perlu memasukkan password githubmu ketika melakukan operasi pada suatu repo seperti saat proses push. \n\n- Buat SSH Keygen \nCatatan: Lewati langkah ini jika kamu sudah pernah membuatnya. SSH Keygen umumnya disimpan pada file: `~/.ssh/id_rsa.pub`.\n\nSSH Keygen digunakan sebagai ID unik dari PC-mu. Pada terminal jalankan perintah berikut:\n\n```\nssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"\n```\n\n\u003e ganti your_email@example.com dengan email kamu gunakan. ikuti langkahnya sampai selesai.\n\n- Copy isi dari SSH Key\n\nCopy isi dari SSH Key yang telah kamu generate, biasanya file bisa kamu temukan pada lokasi `~/.ssh/id_rsa.pub`\n\n- Paste SSH Key tersebut pada Github\n\nBuka https://github.com/settings/keys, lalu klik tombol `New SSH Key` maka akan muncul form. \n\nIsi kolom title dengan nama komputermu sedangkan kolom key diisi dengan SSH Keygen atau isi dari file `~/.ssh/id_rsa.pub`. Lalu klik tombol Add SSH Key. \n\n- Konfirmasi koneksi\n\nUntuk mengkonfirmasi koneksi PC-mu dengan github maka jalankan perintah berikut:\n\n`ssh -T git@github.com`\n\nikuti langkah langkahnya dan jika berhasil akan menampilkan:\n\n`Hi username! You've successfully authenticated, but Github does not provide shell access.`\n\n\u003e Referensi: \n\u003e https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent\n\u003e https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account\n\u003e https://kbroman.org/github_tutorial/\n\n- Konfigurasi Akun Git Pada PC / Terminal\n\nJalankan perintah berikut pada terminal, sehingga ketika kita akan melakukan operasi Git maka si Git tahu bahwa kita bertindak atas nama siapa :).\n\n```\ngit config --global user.email \"you@example.com\"\ngit config --global user.name \"Your Name\"\n```\n\n\u003e Ganti `you@example.com` dengan email kamu dan `Your Name` dengan nama kamu.\n\n\n## Langkah Kedua\n\nSetelah semua persiapan atau langkah pertama selesai kamu kerjakan maka kita masuk ke langkah kedua yaitu mengcopy ke lokal PC.\n\nNamun sebelum itu, jika kamu merasa terbantu dalam belajar git menggunakan repositori ini maka jangan lupa dukung repo ini dengan memberikan bintang (star) serta bagikan link repo ini ke rekanmu yang lain.\n\n![star-fork-github](images/star-fork-github.png)\n\n- Langkah pertama adalah mengcopy repo ini ke repo-mu (ini harus dilakukan jika kamu ingin berkontribusi pada suatu repo). Caranya: klik tombol \"Fork\" pada bagian kiri atas halaman sebagaimana yang ditujukkan pada gambar di atas.\nJika berhasil maka tampilan di repomu kurang lebih akan seperti berikut ini:\n\n![fork-result](images/fork-result.png)\n\nPerhatikan bahwa ada informasi \"forked from hscstudio/belajar-git\" yang menandakan bahwa repo mu itu hasil fork dari repo ini hscstudio/belajar-git.\n\n- Copy repo hasil fork tadi ke lokal PC-mu atau istilahnya meng-clone. Caranya adalah copy \n\n![clone-repo](images/clone-repo.png)\n\nPilih yang use SSH ya bukan use HTTPS.\n\nPada contoh ini, alamatnya adalah:\n\n`git@github.com:kungfukoding/belajar-git.git`\n\nTentu akan berbeda alamatnya menyesuaikan dengan nama username-mu di github. Ingat bukan clone di repo ini ya tapi direpo yang sudah kamu fork.\n\n- Pada terminal, jalankan perintah berikut:\n\n`git clone git@github.com:USERNAME_GUTHUBMU/belajar-git.git`\n\nGanti `USERNAME_GUTHUBMU` dengan username dari akun githubmu atau sesuai apa yang pada bagian sebelumnya kamu copy.\n\nBerikut contoh tampilannya:\n\n```\n➜  latihan git clone git@github.com:kungfukoding/belajar-git.git\nCloning into 'belajar-git'...\nWarning: Permanently added the RSA host key for IP address 'x.x.x.x' to the list of known hosts.\nremote: Enumerating objects: 55, done.\nremote: Counting objects: 100% (55/55), done.\nremote: Compressing objects: 100% (45/45), done.\nremote: Total 55 (delta 22), reused 32 (delta 8), pack-reused 0\nReceiving objects: 100% (55/55), 509.35 KiB | 511.00 KiB/s, done.\nResolving deltas: 100% (22/22), done.\n```\n\n- Perintah diatas otomatis akan mengunduh repo hasil fork ke lokal komputer yaitu pada direktori belajar-git. Masih via terminal, jalankan perintah berikut untuk masuk ke direktori `belajar-git`\n\n`cd belajar-git`\n\n- instalasi repo ini\n\n`npm install`\n\n- jalankan code testing\n\n`npm test`\n\nPastikan hasilnya semua test terpenuhi alias tidak ada yang gagal. Misalnya sebagai berikut:\n```\n PASS  src/index.test.js\n  ✓ contributor ready (3ms)\n\nTest Suites: 1 passed, 1 total\nTests:       1 passed, 1 total\nSnapshots:   0 total\nTime:        1.469s\nRan all test suites.\n```\n\n\u003e Silakan dipelajari dahulu source code yaitu pada folder `src/`, simple kok\n\n## Langkah Ketiga\n\nTugas kamu adalah menambahkan (ingat menambahkan ya bukan mengubah) nama dan link githubmu pada file `src/index.js`. Jika sudah tambahkan code unit testing pada file `src/index.test.js`.\n\nPada file itu ada contohnya yaitu kode yang dikomentari, tolong jangan hapus kode yang dikomentari tersebut karena akan menjadi panduan bagi yang lain.\n\nNamun jangan koding dulu, ikutin langkah berikutnya.\n\n## Langkah Keempat\n\nTambahkan repo ini sebagai repo utama untuk memudahkan kita nantinya mengecek apakan terjadi konflik atau tidak dengan repo utama (hscstudio/belajar-git) \n\n- Pada terminal jalankan perintah `git remote add \u003cnama-repo-utama\u003e \u003calamat-repo\u003e`. nama-repo-utama dapat diisikan bebas, seperti berikut:\n\n`git remote add upstream git://github.com/hscstudio/belajar-git.git`\n \n- Jalankan perintah `git status` untuk mengecek kamu saat ini berada pada branch apa. \n\nContoh hasilnya:\n\n```\nOn branch master\nYour branch is up to date with 'origin/master'.\n```\n\n\u003e Branch utama atau default bernama `master`, dan aturan dari repo ini adalah kamu tidak boleh melakukan perubahan kode pada branch utama secara langsung, dan supaya tidak merusak history dari proyek. Oleh karena itu kita akan membuat branch baru dan bekerja alias koding pada branch tersebut.\n\nJika kamu sudah merasa siap untuk melakuan perubahan maka masuk `branch` baru dengan nama fitur yang ingin kamu tambahkan yaitu `fitur_contributor`\n\nPada terminal jalankan perintah \n\n`git checkout -b fitur_contributor`\n\n\u003e Perintah diatas dalah singkatan dari perintah berikut:\n\n```\ngit branch fitur_contributor\ngit checkout fitur_contributor\n```\n\n- Lakukan perubahan atau koding sesuai tugas pada Langkah Ketiga.\n\n- Jika sudah, jalankan test `npm test`\n\nHasilnya harus passed semua alias tidak boleh ada yang gagal, berikut contohnya:\n\n```\n PASS  src/index.test.js\n  ✓ contributor ready (3ms)\n\nTest Suites: 1 passed, 1 total\nTests:       1 passed, 1 total\nSnapshots:   0 total\nTime:        1.469s\nRan all test suites.\n```\n\n- Jika semua test telah terpenuhi maka infokan perubahan tersebut ke git, dengan perintah `git add .`\n  \n- Kemudian commit perubahan tersebut, dengan perintah `git commit -m \"update fitur contributor\"`\n\n\n## Langkah Kelima\n\nSetelah kita selesai koding maka berikutnya adalah mengirim perubahan yang kita lakukan tersebut ke repo utama.\n\n- Pastikan bahwa kita berada pada repo master `git checkout master`\n- Jalankan perintah berikut untuk memastikan branch master kita uptodate dengan cara mengambil kode dari repo utama. \n\n```\ngit fetch upstream`\ngit merge upstream/master\n```\n\nBerikut contoh hasilnya, jika di repo utama terdapat perubahan.\n\n```\ngit merge upstream/master\nUpdating 4d0191c..4b3743c\nFast-forward\n README.md    | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------\n src/index.js |  3 ++-\n 2 files changed, 83 insertions(+), 18 deletions(-)\n```\n\n- Setelah repo utama uptodate maka kita balik lagi ke branch `fitur_contributor`, melalui perintah berikut: `git checkout fitur_contributor`\n\n- Berikutnya kita gabungkan perubahan kita pada branch ini ke branch master. Melalui perintah: `git rebase master`\n\nJika tidak terjadi conflict maka hasilnya sebagai berikut: \n\n```\ngit rebase master\nCurrent branch fitur_contributor is up to date.\n```\n\n\u003e Conflict bisa terjadi akibat ada perbedaan kode antara branch master yang telah kita update dengan branch `fitur_contributor`.\n\nBerikut contoh tampilan jika terjadi conflict\n\n```\ngit rebase master\nFirst, rewinding head to replay your work on top of it...\nApplying: update fitur contributor\nUsing index info to reconstruct a base tree...\nM       src/index.js\nFalling back to patching base and 3-way merge...\nAuto-merging src/index.js\nCONFLICT (content): Merge conflict in src/index.js\nerror: Failed to merge in the changes.\nPatch failed at 0001 update fitur contributor\nhint: Use 'git am --show-current-patch' to see the failed patch\n\nResolve all conflicts manually, mark them as resolved with\n\"git add/rm \u003cconflicted_files\u003e\", then run \"git rebase --continue\".\nYou can instead skip this commit: run \"git rebase --skip\".\nTo abort and get back to the state before \"git rebase\", run \"git rebase --abort\".\n```\n\nTampilan diatas mengindikasikan bahwa terdapat conflict pada file `src/index.js`, maka buka file itu dan silakan diperbaiki. Jika sudah diperbaiki simpan file tsb. Lalu jalankan perintah `git add src/index.js` atau lakukan untuk semua file yang conflict.\n\nJika sudah jangan di commit tapi langsung jalankan perintah `git rebase --continue`\n\nMaka hasilnya kurang lebih sebagai berikut:\n\n```\ngit rebase --continue \nApplying: update fitur contributor\nApplying: update\nUsing index info to reconstruct a base tree...\nM       src/index.js\n.git/rebase-apply/patch:9: trailing whitespace.\n  \nwarning: 1 line adds whitespace errors.\nFalling back to patching base and 3-way merge...\nAuto-merging src/index.js\n```\n\n- Jalankan rebase master lagi untuk memastikan semua conflict telah baik-baik saja `git rebase master`\n\n- Jalankan `npm test` terakhir untuk memastikan kode perubahan kita tetap jalan sebelum di push.\n\n- Push perubahanmu ke repomu terlebih dahulu, melalui perintah: `git push origin fitur_contributor`\n\nBerikut ini contoh hasilnya:\n\n```\ngit push origin fitur_contributor\nEnumerating objects: 13, done.\nCounting objects: 100% (13/13), done.\nDelta compression using up to 4 threads\nCompressing objects: 100% (9/9), done.\nWriting objects: 100% (9/9), 808 bytes | 808.00 KiB/s, done.\nTotal 9 (delta 5), reused 0 (delta 0)\nremote: Resolving deltas: 100% (5/5), completed with 3 local objects.\nremote: \nremote: Create a pull request for 'fitur_contributor' on GitHub by visiting:\nremote:      https://github.com/kungfukoding/belajar-git/pull/new/fitur_contributor\nremote: \nTo github.com:kungfukoding/belajar-git.git\n * [new branch]      fitur_contributor -\u003e fitur_contributor\n ```\n\nHasil diatas mengindikasikan bahwa push yang kita lakukan berhasil dan si github  menyuruh kita mengakses halaman https://github.com/kungfukoding/belajar-git/pull/new/fitur_contributor untuk melakukan `pull request` kepada si pemilik repo, ikuti langkah berikutnya dulu.\n\n- Submit perubahan atau pull request agar bisa direview oleh pemilik repo ini atau dalam hal ini saya.\n\nSetelah push dilakukan, buka repomu pada github.\n\nMaka akan muncul tampilan seperti di bawah ini:\n\n![pull-request-notification](images/pull-request-notification.png)\n\n- Klik tombol warna hijau yang bertuliskan `Compare \u0026 Pull Request`.\n\n![form-pull-request](images/form-pull-request.png)\n\nHalaman ini menampilkan perbandingan antara kode branch kita dengan kode master di repo, bagian mana yang berubah dst. Github otomatis melakukan pengecekan apakah ada conflict atau tidak. Pada contoh gambar diatas terdapat informasi `able to merge` artinya tidak ada conflict.\n\n- Langkah berikutnya silakan isi komentar pada form tersebut kemudian klik tombol `Create pull request`.\n\n![submit-pull-request](images/submit-pull-request.png)\n\n- Tetap tenang, karena saya akan mereview `pull request`-mu pada kesempatan berikutnya, jika tidak ada conflict maka akan saya merge namun jika masih perlu perubahan akan saya cancel atau akan ada komentar dari saya pada halaman tersebut.\n\n\u003e Contoh penanganan pull request oleh pemilik repo [handling-pull-request](handling-pull-request.md)\n\n- Selesai\n\n## Kesimpulan\n\nDemikian langkah-langkah untuk menggunakan git dan berkontribusi  pada projek bersama. Silakan dipraktekkan dan jika ada masukan jangan sungkan sungkan untuk menulis issue pada repo ini.\n\nSalam hormat dari saya\nHafid Mukhlasin\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhscstudio%2Fbelajar-git","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhscstudio%2Fbelajar-git","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhscstudio%2Fbelajar-git/lists"}