├── GARIS_PANDUAN.md
├── README.md
├── content
├── apa_itu_version_control_management.md
├── bahagian_1_-_bekerja_sendiri.md
├── bahagian_1_-_penutup.md
├── bahagian_2_-_bekerja_dengan_server_repository_seperti_github_gitlab_bitbucket_.md
├── bahagian_3_-_pengurusan_projek_dengan_github.md
├── branching_--_menguruskan_perubahan_dalam_kerja-kerja.md
├── default.md
├── forking.md
├── git_add_--_memilih_fail-fail_yang_ingin_disimpan.md
├── git_checkout_--_melihat_kerja-kerja_lampau.md
├── git_clone_--_membina_kerja_lokal_daripada_repo_di_server.md
├── git_commit_--_menyimpan_kerja.md
├── git_fetch_--_mendapatkan_branch-branch_lain_yang_terdapat_di_repo_di_server.md
├── git_gui_--_menyemak_sejarah_dan_peta_kerja-kerja.md
├── git_init_--_memulakan_projek_baru.md
├── git_log_--_melihat_sejarah_kerja.md
├── git_merge_--_menggabung_kerja-kerja.md
├── git_pull_--_mengemaskini_dengan_yang_terkini_daripada_repo_di_server.md
├── git_push_--_menghantar_kerja-kerja_ke_repo_di_server.md
├── git_push_dengan_komen_ke_issue.md
├── git_remote_--_hubungkan_kerja_lokal_dengan_kerja_di_server.md
├── git_revert_--_buang_dan_ulang_semula.md
├── git_status--mengetahui_situasi_semasa_dan_langkah_seterusnya.md
├── git_tag_--_menandakan_hasil_kerja.md
├── github_pages.md
├── gitignore_--_memaklumkan_pada_git_fail-fail_yang_perlu_diabaikan.md
├── isu_issues_.md
├── kehidupan_seorang_programmer_tanpa_git.md
├── melindungi_branch_penting_master_mungkin_.md
├── memasang_dan_mengenali_git.md
├── membina_ahli_pasukan.md
├── membina_release.md
├── membina_sebuah_repo_repositori_baru.md
├── mempersiapkan_akaun_dengan_kunci_ssh.md
├── mendaftar_akaun_di_github.md
├── menerima_pull_merge_request.md
├── menghantar_pull_merge_request.md
├── milestone.md
├── pengenalan.md
├── resolve_--_membaiki_konflik_dalam_kerja.md
├── test-123.md
├── test-456.md
└── web_hook.md
├── css
├── base.css
├── md-foghorn.css
└── md-simonlc.css
├── images
├── buku-git-github-frontpage.png
├── buku-git-pelan-harga-github.png
├── git-bash-icon.png
├── git-init-1.png
├── git-init-git-status.png
├── git-init-initialized.png
├── git-status-no-git.png
└── test.png
├── index.html
├── js
├── geturl.js
├── jquery.min.js
├── jquery.min.map
└── shell.js
├── lib
├── index.js
└── markdown.js
├── psd-screenshots
├── git-bash-terminal.psd
└── git-init.psd
└── toc.js
/GARIS_PANDUAN.md:
--------------------------------------------------------------------------------
1 | # Garis Panduan Penulisan
2 |
3 | ## Tipografi
4 |
5 | Selain isi kandungan buku, tipografi juga penting dalam penulisan Buku Git, bagi memastikan Buku Git mudah dibaca dan tidak mengganggu perhatian pembaca. Terdapat beberapa elemen-elemen tipografi yang perlu diberi perhatian dalam penulisan Buku Git.
6 |
7 | ### Tajuk
8 |
9 | Tujuan utama tajuk digunakan adalah untuk memberitahu pembaca tentang *struktur* mesej yang hendak disampaikan. Contoh penggunaan tajuk:
10 |
11 | # Pemasangan Git
12 |
13 | Sebelum kita memulakan pembelajaran tentang penggunaan Git, ...
14 |
15 | ## Linux
16 |
17 | Pemasangan Git bagi Linux berbeza-beza mengikut distro...
18 |
19 | ### Ubuntu
20 |
21 | `git` boleh dipasang menggunakan `apt-get`...
22 |
23 | ### CentOS
24 |
25 | `git` boleh dipasang menggunakan `yum`...
26 |
27 | Cuba untuk tidak menggunakan lebih daripada 3 aras tajuk bagi tidak mengelirukan pembaca.
28 |
29 | Selain itu, tajuk haruslah ringkas dan deskriptif. Jika didapati teks tajuk terlalu panjang, adalah lebih baik jika teks tersebut diletakkan di dalam perenggan. Sebagai contoh, ini tidak bagus:
30 |
31 | > ### gitignore -- Memaklumkan pada Git Fail-fail yang perlu diabaikan
32 | > Kadangkala, kita tidak mahu menyimpan sesetengah fail ke dalam Git...
33 |
34 | manakala, ini lebih bagus:
35 |
36 | > ### Pengabaian fail
37 | > Kadangkala, kita tidak mahu menyimpan sesetengah fail ke dalam Git. Dengan menggunakan `.gitignore`, kita boleh memberitahu Git untuk mengabaikan fail-fail tertentu...
38 |
39 | ### Perenggan
40 |
41 | Dalam Markdown, setiap baris teks yang biasa (tanpa apa-apa *format*) merupakan satu perenggan. Perenggan baru boleh dimulakan dengan memulakan teks di garis yang baru, dan dipisahkan dengan satu garis kosong. Contoh:
42 |
43 | Teks ini tergolong dalam perenggan pertama.
44 |
45 | Manakala teks ini tergolong dalam perenggan kedua.
46 |
47 | Setiap perenggan seharusnya *fokus kepada satu mesej* yang ingin disampaikan. Jika suatu perenggan melibatkan banyak mesej, adalah lebih baik untuk memecahkan perenggan tersebut kepada beberapa perenggan yang lain.
48 |
49 | Selain itu, perenggan juga boleh digunakan untuk *menarik perhatian* pembaca, dengan menggunakan ayat yang pendek dalam satu perenggan. Sebagai contoh (lihat perenggan kedua):
50 |
51 | > Saya rasa kita semua pernah buat kerja sebegini. Dan kita juga mungkin pernah terus menyambung kerja tanpa menghiraukan tentang backup, sehinggalah kerja-kerja baru ini merosakkan keseluruhan projek. Dan kemudian kita baru tersedar yang kita tiada satu salinan projek dari versi 1 untuk memulakan semula kerja-kerja ke arah versi 2.
52 |
53 | > Git ialah penyelesaian kepada semua masalah-masalah ini.
54 |
55 | > Git akan menyimpan kesemua sejarah perubahan projek anda, jadi amat mudah jika anda ingin melihat kembali kepada code anda yang asal. Selain itu, ...
56 |
57 | ### Penekanan perkataan
58 |
59 | Jika terdapat perkataan-perkataan yang perlu diambil perhatian oleh pembaca, gunakan *italic* ataupun **bold**:
60 |
61 | Perkataan *ini* menggunakan italic, manakala perkataan **ini** menggunakan bold.
62 |
63 | > Perkataan *ini* menggunakan italic, manakala perkataan **ini** menggunakan bold.
64 |
65 | Penggunaan diantara italic ataupun bold haruslah mengikut keadaan dan kesesuaian. Gunakan italic untuk penekanan ringan, manakala bold untuk penekanan berat. Sebagai contoh:
66 |
67 | > `git rebase` akan *mengubah* commit anda. **Jangan** guna `git rebase` terhadap commit yang telah disimpan di dalam remote.
68 |
69 | **Jangan** tekankan terlalu banyak perkataan, kerana jika terlalu banyak perkataan yang diberi penekanan, pembaca akan menjadi keliru, dan perkataan yang sepatutnya diberi perhatian akan *diabaikan* oleh pembaca.
70 |
71 | ### Penyertaan code
72 |
73 | Jika perlu untuk menyertakan *code* di dalam teks, sila gunakan *backtick quote*. Sebagai contoh:
74 |
75 | Ini teks biasa. Dibawah merupakan code:
76 |
77 | ```
78 | printf("Hai!");
79 | ```
80 |
81 | Boleh juga menyertakan code dalam barisan seperti `code` ini.
82 |
83 | > Ini teks biasa. Dibawah merupakan code:
84 | >
85 | > ```
86 | > printf("Hai!");
87 | > ```
88 | >
89 | > Boleh juga menyertakan code dalam barisan seperti `code` ini.
90 |
91 | Tidak disyorkan untuk menggunakan *screenshot* untuk menyertakan code, kerana pembaca mungkin ingin *copy-paste* code tersebut, dan ini mejadi mustahil jika screenshot digunakan.
92 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Buku Git
2 |
3 | http://kidino.github.io/buku-git
4 |
5 | Projek penulisan secara berkumpulan untuk membangunkan bahan rujukan Git yang boleh digunapakai oleh setiap pembaca bahasa Melayu yang ingin mendalami kemahiran ini.
6 |
7 | Bahan ini juga boleh dicetak, dikongsi dan digunakan dalam bengkel latihan di mana-mana sahaja ia diadakan.
8 |
9 | Saya alu-alukan kerjasama dan bantuan tuan-tuan dan puan-puan dalam usaha untuk menyiapkan buku ini. **Fork** dan **Pull Request** untuk membantu dalam kerja-kerja penulisan. Lihat fail-fail di dalam `/content` untuk tolong menulis.
10 |
11 |
--------------------------------------------------------------------------------
/content/apa_itu_version_control_management.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Apa itu Version Control Management
4 |
5 | Dalam kerja-kerja programming, kita banyak membuat ubahsuai kepada kerja-kerja, mencuba-daya kaedah dan ciri baru untuk sistem yang dibangunkan, menghasilkan versi baru untuk aplikasi dan sebagainya. Dan pada masa yang sama, kita mahu menjaga source code yang telah siap agar tidak rosak dengan cuba-daya kita yang baru itu. Tetapi sekiranya pembangunan yang baru ini berhasil, ia perlu digabungkan kepada sistem utama dan dikeluarkan sebagai versi baru.
6 |
7 | Segala-gala ini, lebih-lebih lagi apabila melibatkan lebih daripada seorang programmer, akan menjadikan kerja sangat rumit.
8 |
9 | Dengan Version Control Management, kerja-kerja programming lebih mudah diuruskan, tanpa mengira platform dan bahasa pengaturcaraan yang kita gunakan. Ianya juga membantu dalam menggabungkan kerja-kerja daripada pelbagai programmer dalam satu projek.
10 |
11 | Dalam industri pembangunan IT sekarang yang mana source code boleh menjangkau jutaan baris, adalah amat penting kita menggunakan sesuatu Version Control Management.
12 |
13 | ### Contoh-contoh Version Control Management
14 |
15 | Berikut adalah contoh-contoh aplikasi yang dibangunkan dan digunakan untuk version control management:
16 |
17 | * CVS
18 | * Mercurial
19 | * SVN
20 | * Git
21 |
22 | Yang lebih terkini, malah yang banyak digunakan oleh projek-projek open source adalah Git. Malahan, sudah hampir menjadi satu kemestian seorang programmer itu perlu mengetahui Git untuk lebih berdaya saing dalam kerjaya. Kebanyakan syarikat IT yang terlibat dalam pembangunan menetapkan Git sebagai salah satu daripada kemahiran yang mesti dimiliki oleh calon pekerja. Setidak-tidaknya, programmer itu perlulah tahu salah satu daripada kaedah version control management di atas.
23 |
24 | Maka ayuh kita teruskan dengan pembelajaran Git.
25 |
--------------------------------------------------------------------------------
/content/bahagian_1_-_bekerja_sendiri.md:
--------------------------------------------------------------------------------
1 | # Bahagian 1 - Bekerja Sendiri
2 |
3 | Git boleh digunakan bersama-sama dan beramai-ramai. Ini perlu apabila kita ingin menggabungkan kerja-kerja yang dibangunkan berasingan. Tetapi sebelum itu, kita perlulah tahu cara menggunakan Git secara berseorangan.
4 |
5 | Apabila kita sudah mahir menggunakan Git secara berseorangan di komputer sendiri, ianya menjadi mudah apabila kita ingin menambah ahli pasukan dan mengurus dan membahagikan kerja, dan kemudian menggabungkan semula kerja-kerja.
6 |
7 | **Bahagian 1** memberi tunjuk ajar tentang perkara-perkara yang wajib diketahui seorang programmer untuk menggunakan Git.
8 |
--------------------------------------------------------------------------------
/content/bahagian_1_-_penutup.md:
--------------------------------------------------------------------------------
1 | # Penutup Bahagian 1
2 |
3 | Tahniah! Sekarang anda sudah tahu dan kuasai asas-asas Git. Langkah seterusnya adalah mempraktiskan ilmu Git yang telah anda pelajari di sini dalam kehidupan seharian anda sebagai pengatur cara.
4 |
5 | Sebelum ke Bahagian 2, berehat seketika [di sini](https://try.github.io/levels/1/challenges/1). Segarkan semula ilmu-ilmu asas Git anda sebelum ke topik-topik yang lebih menyeronokkan!
--------------------------------------------------------------------------------
/content/bahagian_2_-_bekerja_dengan_server_repository_seperti_github_gitlab_bitbucket_.md:
--------------------------------------------------------------------------------
1 | # Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | ### Pengenalan
4 |
5 | Dalam Bahagian 1, kita telah mempelajari bagaimana menggunakan Git secara berseorangan iaitu semua fail-fail, kod disimpan secara lokal. Jika kita mempunyai satu team yang terdiri daripada beberapa ahli, mustahil untuk menyimpan fail dan kod secara lokal di dalam komputer setiap ahli. Oleh itu, kita memerlukan satu Server Repository yang boleh diakses di dalam satu-satu 'network' ataupun di awan (cloud).
6 |
7 | Terdapat pelbagai Server Repository untuk Git di pasaran. Antara yang terkenal adalah seperti *Github*, *Gitlab* dan *Bitbucket*. Walau bagaimanapun, Buku Git tidak menunjukkan cara-cara untuk menyediakan (setup) server Git, sebaliknya menunjukkan cara penggunaan Server Repository sedia ada.
8 |
9 | #### Pengenalan dan perbezaan antara Server Repository
10 |
11 | 1. Github
12 | * Github merupakan Server Repository paling popular di dunia. Hampir 11.4 juta Repository disimpan di Github.
13 | * **Kelebihan**
14 | * Github adalah percuma
15 | * Github menjadi Server Repository bagi kebanyakan perisian terbuka
16 | * Github menjadi tempat rujukan bagi sesetengah majikan IT untuk memilih calon pekerja melalui kodnya di Repository Github.
17 | * **Kekurangan**
18 | * Github hanya percuma untuk Repository yang 'public'. Berbayar secara bulanan kepada 'private' repository.
19 | 2. Gitlab
20 | * Gitlab pada asalnya hanyalah sebuah perisian untuk menjalankan Server Repository. Pengguna boleh muat turun perisian terbukanya dan install pada peranti masing-masing secara percuma. Walaubagaimanapun, pada tahun 2015, Gitlab memperkenalkan Gitlab.com iaitu Server Repository di awan sama seperti Github.
21 | * **Kelebihan**
22 | * Gitlab adalah percuma termasuklah 'private' Repository.
23 | * Tiada had untuk repository baru
24 | * Tiada had untuk ahli kumpulan
25 | * **Kekurangan**
26 | * Pihak Gitlab sendiri mengatakan Server Repository di awan mereka sangat perlahan kerana terlalu ramai pengguna sejak pengelannya pada 2015, bagaimanapun, mereka ada menyatakan akan ada penambahbaikan pada suku pertama 2016. Nantikan.
27 | 3. Bitbucket
28 | * Bitbucket merupakan pesaing terdekat kepada Github, menyediakan Server Repository di awan.
29 | * **Kelebihan**
30 | * Bitbucket adalah percuma termasuklah 'private' Repository
31 | * Tiada had untuk repository baru
32 | * **Kekurangan**
33 | * Mempunyai had (5) untuk collaborators bagi akaun percuma
--------------------------------------------------------------------------------
/content/bahagian_3_-_pengurusan_projek_dengan_github.md:
--------------------------------------------------------------------------------
1 | # Bahagian 3 - Pengurusan Projek Dengan Github
--------------------------------------------------------------------------------
/content/branching_--_menguruskan_perubahan_dalam_kerja-kerja.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Branching -- Menguruskan Perubahan dalam Kerja-kerja
--------------------------------------------------------------------------------
/content/default.md:
--------------------------------------------------------------------------------
1 | # Pick a Page from the Menu
--------------------------------------------------------------------------------
/content/forking.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Forking
4 |
5 | Forking, atau Fork fungsinya adalah untuk mengasingkan codebase asal daripada codebase pengguna lain. Mengapa mahu begitu? Khusus untuk memudahkan tuan punya codebase asal menjaga 'keaslian' codebase asal tersebut.
6 |
7 | Tidaklah lagi 2 orang atau lebih bergaduh pada fail yang sama. Sekarang, 2 orang tersebut boleh bekerja atas fail coding yang sama, tetapi ianya tidak menggangu antara satu sama lain.
8 |
--------------------------------------------------------------------------------
/content/git_add_--_memilih_fail-fail_yang_ingin_disimpan.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Add -- Memilih Fail-fail yang ingin disimpan
4 |
5 | > Membina web, kita memulakan dengan membina sebuah fail ```index.html```. Maka itulah yang Johan lakukan.
6 |
7 | * Bina sebuah fail ```index.html``` menggunakan editor pilihan.
8 | * Taipkan kandungan HTML seperti berikut.
9 |
10 | ```
11 |
12 |
13 | Belajar Git
14 |
15 |
16 |
Belajar Git
17 |
18 |
19 | ```
20 |
21 | * Simpan fail ini
22 | * Pergi semula ke folder, lakukan _right-click_ and pilih Git Bash seperti sebelum ini.
23 | * Di dalam Git Bash, taipkan arahan ```git status```.
24 |
25 | ```
26 | $ git status
27 | On branch master
28 |
29 | Initial commit
30 |
31 | Untracked files:
32 | (use "git add ..." to include in what will be committed)
33 |
34 | index.html
35 |
36 | nothing added to commit but untracked files present (use "git add" to track)
37 | ```
38 |
39 | Perhatikan di sini, Git sudah mengenalpasti satu fail, ```index.html``` yang kini belum di_track_.
40 |
41 | Selepas ini, kita akan ```commit```, dan perubahan ini akan direkodkan. Tetapi sebelum itu, kita perlu maklum kepada Git perubahan apa yang kita mahu rekodkan. Jadi di sini kita gunakan ```git add``` sebagai satu proses sebelum kita ```commit```.
42 |
43 | Kita boleh rekodkan perubahan mengikut fail-fail yang kita mahu.
44 |
45 | ```
46 | $ git add index.html
47 | ```
48 |
49 | Bila kita buat begini, hanya fail ini yang akan direkodkan oleh Git apabila kita ```commit``` kelak. Apabila kita buat ```git status``` tadi, kita boleh lihat fail-fail yang mana kita mahu rekodkan perubahan. Bagi fail yang kita tak mahu rekodkan dalam ```commit``` kita tak perlu masukkan dalam ```git add```.
50 |
51 | Untuk memasukkan semua fail, kita boleh juga lakukan arahan sebegini.
52 |
53 | ```
54 | $ git add .
55 | ```
56 |
57 | Selepas melakukan ```git add```, kita boleh lakukan semula ```git status```.
58 |
59 | ```
60 | $ git status
61 | On branch master
62 |
63 | Initial commit
64 |
65 | Changes to be committed:
66 | (use "git rm --cached ..." to unstage)
67 |
68 | new file: index.html
69 | ```
70 |
--------------------------------------------------------------------------------
/content/git_checkout_--_melihat_kerja-kerja_lampau.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Checkout -- Melihat Kerja-kerja Lampau
--------------------------------------------------------------------------------
/content/git_clone_--_membina_kerja_lokal_daripada_repo_di_server.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Git Clone -- Membina Kerja Lokal Daripada Repo di Server
--------------------------------------------------------------------------------
/content/git_commit_--_menyimpan_kerja.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Commit -- Menyimpan Kerja
--------------------------------------------------------------------------------
/content/git_fetch_--_mendapatkan_branch-branch_lain_yang_terdapat_di_repo_di_server.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Git Fetch -- Mendapatkan Branch-branch lain yang terdapat di Repo di Server
--------------------------------------------------------------------------------
/content/git_gui_--_menyemak_sejarah_dan_peta_kerja-kerja.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git GUI -- Menyemak Sejarah dan Peta Kerja-kerja
--------------------------------------------------------------------------------
/content/git_init_--_memulakan_projek_baru.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Init -- Memulakan Projek Baru
4 |
5 | Perkara pertama yang kita buat apabila menggunakan Git adalah memberikan arahan ```git init```.
6 |
7 | Dalam buku ini, kita akan membina sebuah projek contoh. Di sini kita akan membina sebuah laman web ringkas yang mengandungi maklumat peribadi anda. Laman web ini yang kita akan simpan menggunakan Git. Dengan Git, kita boleh menyemak segala perubahan dalam projek yang kita bina ini.
8 |
9 | 1. Bina sebuah folder dengan nama `PROJEK-GIT` (lokasinya terpulang kepada anda):
10 |
11 | ```sh
12 | $ mkdir PROJEK-GIT
13 | $ cd PROJEK-GIT
14 | ```
15 |
16 | 2. Mulakan projek Git baru di dalam folder tersebut dengan `git init`:
17 |
18 | ```sh
19 | $ git init
20 | Initialized empty Git repository in C:/Projects/PROJEK-GIT/.git/
21 | ```
22 |
23 | Tahniah! Di saat ini, kita telah pun menggunakan Git untuk mengenalpasti sebarang perubahan dalam projek. Di bahagian yang akan datang, kita akan mula membina sebuah projek ringkas dan melihat bagaimana Git digunakan.
24 |
--------------------------------------------------------------------------------
/content/git_log_--_melihat_sejarah_kerja.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Log -- Melihat Sejarah Kerja-kerja
4 |
5 | Bahagian ini menunjukkan cara menyenaraikan sejarah kerja-kerja yang pernah kita `commit`.
6 |
--------------------------------------------------------------------------------
/content/git_merge_--_menggabung_kerja-kerja.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Merge -- Menggabung Kerja-kerja
--------------------------------------------------------------------------------
/content/git_pull_--_mengemaskini_dengan_yang_terkini_daripada_repo_di_server.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Git Pull -- Mengemaskini dengan yang Terkini Daripada Repo di Server
--------------------------------------------------------------------------------
/content/git_push_--_menghantar_kerja-kerja_ke_repo_di_server.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Git Push -- Menghantar Kerja-kerja ke Repo di Server
--------------------------------------------------------------------------------
/content/git_push_dengan_komen_ke_issue.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 3 - Pengurusan Projek Dengan Github
2 |
3 | # Git Push dengan Komen ke Issue
--------------------------------------------------------------------------------
/content/git_remote_--_hubungkan_kerja_lokal_dengan_kerja_di_server.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Git Remote -- Hubungkan Kerja Lokal Dengan Kerja di Server
--------------------------------------------------------------------------------
/content/git_revert_--_buang_dan_ulang_semula.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Revert -- Buang dan Ulang Semula
--------------------------------------------------------------------------------
/content/git_status--mengetahui_situasi_semasa_dan_langkah_seterusnya.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Status -- Mengetahui situasi semasa dan langkah seterusnya
4 |
5 | Git Status memaklumkan kepada kita status semasa projek dari aspek git.
6 |
7 | ```sh
8 | $ git status
9 | On branch master
10 |
11 | Initial commit
12 |
13 | nothing to commit (create/copy files and use "git add" to track)
14 | ```
15 |
16 | Ini adalah contoh maklumbalas yang anda boleh dapat daripada git. Dalam keadaan ini, Git memaklumkan kepada kita bahawa ini projek baru.
17 |
18 | Selepas ini kita akan banyak gunakan ```git status``` untuk mengetahui status semasa Git.
19 |
--------------------------------------------------------------------------------
/content/git_tag_--_menandakan_hasil_kerja.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Git Tag -- Menandakan Hasil Kerja
4 |
5 | Menggunakan `git checkout` atau apa-apa arahan lain untuk merujuk semula ke titik kerja yang lalu agak rumit kita kita bergantung kepada commit ID. Jadi, kita boleh penandakan sesuatu commit dengan ```tag```. Bila kita dah banyak membuat penambahan/perbaharuan dalam perisian yang dibangunkan, kita boleh menandakan titik perlepasan (`release point`).
6 |
7 | Untuk menyenarai `tag`, kita boleh menggunakan command `git tag`, seperti berikut:
8 |
9 | ```sh
10 | $ git tag
11 | v0.5
12 | v1.0
13 | ```
14 |
15 | Sekiranya kita, tidak pernah membuat `tag`, tidak ada sebarang `tag` akan dipaparkan.
16 |
17 | Untuk melihat terperinci tentang `tag` yang dibuat, boleh taip:
18 |
19 | ```sh
20 | $ git show v1.1-beta
21 | commit ca82a6dff817ec66f44342007202690a93763949
22 | Author: Nurulazrad Murad
23 | Date: Mon Dec 18 21:52:11 2008 +0800
24 |
25 | changed the version number
26 | ```
27 |
28 | ### Membuat `tag` Baru
29 |
30 | Anda juga boleh membuat `tag` untuk kerja-kerja yang lepas, contohnya ada mempunyai `commit` seperti dibawah (`git log` menyenaraikan commit):
31 |
32 | ```sh
33 | $ git log --pretty=oneline
34 |
35 | commit c7e170a4b3f820e91674696c55d146d443a5f023
36 | Author: Iszuddin Ismail
37 | Date: Sat Dec 19 07:07:51 2015 +0800
38 |
39 | minor standardization
40 |
41 | Signed-off-by: Iszuddin Ismail
42 |
43 | commit d7f356330b00414da298959c0ddf54fcc7e0b370
44 | Merge: 7167656 ae98e57
45 | Author: Iszuddin Ismail
46 | Date: Sat Dec 19 06:50:03 2015 +0800
47 |
48 | Merge pull request #6 from hasyimibhar/pasang-osx
49 |
50 | Tambah maklumat tentang pemasangan git untuk Mac OS X
51 | ```
52 |
53 | Katakan, kita hendak menandakan `v0.6` dalam projek kita pada `commit c7e170a4` _(hanya gunakan 8 aksara pertama dari commit ID)_.
54 |
55 | ```sh
56 | $ git tag -a v0.6 commit c7e170a4
57 | ```
58 |
59 | Dan untuk melihat, taip `git show v0.6`
60 |
61 | ```sh
62 | $ git show v0.6
63 | commit c7e170a4b3f820e91674696c55d146d443a5f023
64 | Author: Iszuddin Ismail
65 | Date: Sat Dec 19 07:07:51 2015 +0800
66 |
67 | minor standardization
68 |
69 | Signed-off-by: Iszuddin Ismail
70 | ```
71 |
72 | Untuk memastikan lagi, kita boleh guna semula arahan `git tag`.
73 |
74 | ```sh
75 | $ git tag
76 | v0.5
77 | v0.6
78 | v1.0
79 | ```
80 |
81 | ### Checkout Tag
82 |
83 | Untuk berkerja pada `tag` yang tertentu, sila taip:
84 |
85 | ```sh
86 | $ git checkout -b version1 v1.0
87 | Switched to a new branch 'version1'
88 | ```
89 |
90 | Di sini, kita mengambil kerja-kerja dari tag `v1.0` dan disalinkan ke _branch_ baru, *version1*. Kita akan bincangkan tentang *Branching* dengan lebih lanjut di bab yang lain.
91 |
--------------------------------------------------------------------------------
/content/github_pages.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Github Pages
--------------------------------------------------------------------------------
/content/gitignore_--_memaklumkan_pada_git_fail-fail_yang_perlu_diabaikan.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # gitignore -- Memaklumkan pada Git Fail-fail yang perlu diabaikan
4 |
5 | Kadangkala kita perlu mengabaikan fail ataupun direktori, contohnya fail sementara ataupun konfigurasi yang dijana oleh program penyunting teks ataupun Persekitaran Pembangunan (IDE). Ini adalah kerana bukan semua orang menggunakan program yang sama untuk menulis kod.
6 |
7 | Fail-fail `gitignore`:
8 |
9 | 1. $HOME/.config/git/ignore
10 | 1. $GIT_DIR/info/exclude
11 | 1. .gitignore
12 |
13 | Setiap baris di dalam fail `gitignore` adalah corak yang akan dipadankan oleh Git untuk tujuan pengabaian. Git lazimya memeriksa corak daripada beberapa sumber, mengikut turutan yang paling penting dahulu:
14 |
15 | 1. Corak daripada garis perintah (contohnya daripada `git ls-files` and `git read-tree`)
16 |
17 | 1. Corak daripada fail `.gitignore` di dalam direktori semasa ataupun direktori di atasnya
18 |
19 | 1. Corak daripada fail `$GIT_DIR/info/exclude`. `$GIT_DIR` di sini adalah direktori `.git` di direktori paling atas untuk projek semasa
20 |
21 | 1. Corak daripada fail yang ditunjukkan oleh pembolehubah `core.excludesFile` di dalam fail konfigurasi pengguna `~/.gitconfig`
22 |
23 | Setiap fail `gitignore` mempunyai tujuan mereka sendiri:
24 |
25 | * Corak yang sepatutnya disimpan ke dalam *version control* bagi membolehkan semua orang menggunakannya, haruslah dimasukkan ke dalam `.gitignore`. Ini bermaksud fail `.gitignore` disimpan seperti fail biasa di dalam projek. Corak di dalamnya hanya akan berkesan untuk direktori di mana ia berada dan direktori yang lebih dalam
26 |
27 | * Corak yang khas kepada sesuatu projek tetapi tidak perlu dikongsikan dengan projek lain tetapi hanya digunakan oleh seseorang, haruslah dimasukkan ke dalam `$GIT_DIR/info/exclude`
28 |
29 | * Corak yang seseorang mahukan untuk diabaikan secara keseluruhan di dalam sistem beliau, boleh dimasukkan ke dalam fail yang ditunjukkan oleh pembolehubah `core.excludesFile` di dalam fail `~/.gitconfig`.
30 |
31 | Nota: Sekiranya `core.excludesFile` tidak diset, fail lalai adalah `$XDG_CONFIG_HOME/git/ignore`. Sekiranya `$XDG_CONFIG_HOME` tidak diset, fail lalai adalah `$HOME/.config/git/ignore`
32 |
33 | #### Format Corak
34 |
35 | * Baris kosong - tidak dipadankan dan hanya digunakan untuk mengasingkan barisan-barisan lain (untuk memudahkan pembacaan dan pengasingan)
36 |
37 | * Baris bermula dengan # adalah barisan komen. Bagi mengabaikan nama fail atau direktori yang bermula dengan #, kita perlu masukkan `\` sebelum # yang pertama. Contohnya "`\#namafail#.txt`"
38 |
39 | * Ruang kosong di dalam barisan akan diabaikan kecuali dimasukkan `\` sebelumnya. Contohnya "`Nama\ Fail.xls`"
40 |
41 | * Awalan "`!`" digunakan bagi membatalkan pengabaian yang terlah dilakukan sebelumnya. Contohnya sekiranya anda mempunyai fail1.bak sehingga fail10.bak anda boleh mengabaikan semua fail **kecuali** fail5.bak dengan 2 barisan berikut:
42 | ```
43 | fail*.bak
44 | !fail5.bak
45 | ```
46 | Sama seperti kes #, jika anda mempunyai fail yang bermula dengan ! anda boleh menggunakan `\` di hadapan. Contohnya "`!myfile.txt`"
47 |
48 | * Sekiranya barisan berakhir dengan `/` Git hanya akan memadankan corak untuk direktori tetapi bukan untuk fail. Contohnya "`mygit/`" hanya akan dipadankan dengan direktori `mygit` tetapi bukan fail bernama `mygit`.
49 |
50 | * *wildcard* di dalam corak tidak akan dipadankan dengan `/` di dalam direktori. Contohnya "`mygit/*.c`" akan dipadankan dengan `mygit/prog.c` tetapi tidak dengan `mygit/tools/tool1.c`
51 |
52 | * Awalan *slash* `/` akan dipadankan dengan direktori semasa. Contohnya "`/*.cpp`" akan dipadankan dengan `prog.cpp` tetapi tidak `mygit/prog.cpp`
53 |
54 | Ia bertambah menarik dengan penggunaan dua *asterisk* ("`**`"), di mana corak dipadankan dengan laluan direktori sepenuhnya:
55 |
56 | * Awalan "`**`" diikuti dengan `/` bermaksud padankan di dalam semua direktori. Contohnya:
57 |
58 | * "`**/mygit`" berfungsi sama dengan corak "`mygit`" dan dipadankan dengan fail atau direktori bernama `mygit`
59 |
60 | * "`**/mygit/tools`" memadankan fail atau direktori bernama `tools` di bawah direktori `mygit`
61 |
62 | * Akhiran "`**`" akan dipadankan dengan semua yang berada di dalam. Contohnya `"tools/**"` akan mengabaikan semua kandungan direktori bernama `tools`
63 |
64 | * Sekiranya "`**`" berada di tengah, ia akan dipadankan dengan semua direktori di antaranya. Contohnya "`mygit/**/temp`" akan dipadankan dengan `mygit/temp`, `mygit/tool1/temp`, `mygit/tool2/module/temp`
65 |
66 | Sekiranya fail yang hendak diabaikan telah disimpan ke dalam *repository* sebelumnya, gunakan `git rm --cached`
67 |
--------------------------------------------------------------------------------
/content/isu_issues_.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 3 - Pengurusan Projek Dengan Github
2 |
3 | # Isu (Issues)
--------------------------------------------------------------------------------
/content/kehidupan_seorang_programmer_tanpa_git.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Kehidupan Seorang Programmer Tanpa Git
4 |
5 | Sebelum kita terus kepada Git, saya rasa anda akan lebih faham kegunaan Git apabila kita mengimbau kembali apa yang kita biasa buat untuk menyimpan hasil-hasil kerja kita dalam pembangunan.
6 |
7 | Untuk lebih memahami, kita akan melihat kepada apa yang dihadapi oleh **Johan** dalam membuat kerja-kerja programming.
8 |
9 | ** Memulakan Projek Baru **
10 |
11 | > Johan adalah seorang graduan yang baru menamatkan pengajian. Dia baru memulakan kerja Syarikat Sistem Sdn. Bhd. Untuk memulakan projek baru, Johan biasanya akan membina satu folder baru di dalam komputer. Mari kita namakan folder ini *PROJEK-A*.
12 |
13 | ** Menyalin Folder Baru **
14 |
15 | > Apabila telah siap versi 1.0, dan Johan perlu menyambungkan kerja-kerja untuk menyiapkan versi 2.0, dia akan menyalin keseluruhan folder *PROJEK-A* kepada *PROJEK-A-2*.
16 |
17 | Saya rasa kita semua pernah buat kerja sebegini. Dan kita juga mungkin pernah terus menyambung kerja tanpa menghiraukan tentang *backup*, sehinggalah kerja-kerja baru ini merosakkan keseluruhan projek. Dan kemudian kita baru tersedar yang kita tiada satu salinan projek dari versi 1 untuk memulakan semula kerja-kerja ke arah versi 2.
18 |
19 | Maka terpaksalah kita membuat segalanya dari awal semula.
20 |
21 | ** Menyalin Fail Baru **
22 |
23 | > Ada ketika yang lain, Johan hanya mau mengubah fail `index.html` untuk mengubah rupabentuk laman utama. Agar terdapat satu backup yang boleh digunakan sekiranya ubahsuai baru merosakkan, maka Johan pun menyalin `index.html` ke `index-backup.html`.
24 |
25 | Kadang-kala walaupun kita sudah berhati-hati, kita buat silap juga. Yang kita sangkakan kita ada `index-backup.html`, tetapi fail itulah sebenarnya yang telah kita ubah.
26 |
27 | ** Ahli Pasukan -- Jangan Usik Fail Saya **
28 |
29 | > Semasa di universiti, apabila terdapat kerja berpasukan, pastinya Johan menetapkan modul-modul yang akan dibangunkan oleh ahli pasukan. Dan Johan juga dengan garang telah menyatakan agar ahli pasukan jangan mengusik fail-fail yang bukan milik mereka. Apabila ingin menggabungkan hasil kerja, Johanlah yang paling tertekan kerana perlu banyak memperbetulkan source code kawan-kawan. Selain itu Johan juga perlu memastikan sistem berjalan lancar setelah kerja-kerja digabungkan.
30 |
31 | Kalau hendak dipendekkan, mungkin boleh saya katakan bahawa ada cara yang lebih baik -- iaitu menggunakan Git. Kelak kita akan tunjukkan bagaimana Git membantu mengatasi masalah-masalah ini.
32 |
--------------------------------------------------------------------------------
/content/melindungi_branch_penting_master_mungkin_.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 3 - Pengurusan Projek Dengan Github
2 |
3 | # Melindungi Branch Penting (master mungkin)
--------------------------------------------------------------------------------
/content/memasang_dan_mengenali_git.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Memasang dan Mengenali Git
4 |
5 | ## Git Sebuah Alatan *Command Line*
6 |
7 | Apa yang anda perlu tahu, Git adalah sebuah alatan untuk kegunaan di *Command Line*, ataupun *Terminal*. Kalau dalam Windows mungkin kita panggil *Command Prompt*. Selain itu, Git juga boleh digunakan melalui *Graphical User Interface*. Namun untuk Buku Git ini, kita akan lebih mengkhususkan kepada penggunaan di *Command Line* agar anda lebih memahami konsep-konsep penting dalam Git.
8 |
9 | Sekiranya konsep-konsep penting ini telah dihadamkan, tidak kira apa aplikasi klien Git yang kita gunakan, kita pasti tahu apa yang perlu dilakukan.
10 |
11 | ## Memasang Git untuk Windows
12 |
13 | 1. Muat turun pemasang Git untuk Windows dari laman web Git: http://git-scm.com/download/win
14 | 2. Jalankan pemasang Git tersebut, dan klik *Next* sehingga pemasangan Git tamat.
15 | 3. Terminal Git boleh diakses dengan menjalankan aplikasi *Git Bash*:
16 |
17 | 
18 |
19 | 4. Jalankan arahan `git --version` untuk mencuba Git. Anda akan dapat melihat version Git yang telah dipasang:
20 |
21 | ```sh
22 | $ git --version
23 | git version 2.6.4.windows.1
24 | ```
25 |
26 | ## Memasang Git untuk Mac OS X
27 |
28 | Terdapat dua cara mudah untuk memasang Git untuk Mac OS X: menggunakan `brew` (http://brew.sh) atau `xcode-select`.
29 |
30 | ### Cara 1: Menggunakan `brew`
31 |
32 | 1. Pasang `brew` terlebih dahulu:
33 |
34 | ```sh
35 | $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
36 | ```
37 |
38 | 2. Kemudian pasang `git`:
39 |
40 | ```sh
41 | $ brew install git
42 | ```
43 |
44 | > `brew` merupakan alatan yang seringkali diguna pakai untuk memasang alatan dan perisian untuk OS X.
45 |
46 | ### Cara 2: Menggunakan `xcode-select`
47 |
48 | Ini merupakan cara yang lebih rasmi untuk memasang `git` untuk Mac OS X:
49 |
50 | ```sh
51 | $ xcode-select --install
52 | ```
53 |
54 | > Command di atas bukan sahaja memasang `git`, malah memasang alatan-alatan lain seperti `gcc` dan `clang`.
55 |
56 | ### Memasang Git untuk Linux
57 |
58 | ### Cara 1: Menggunakan `apt-get`
59 |
60 | 1. Kemaskini pakej `apt` terlebih dahulu:
61 |
62 | ```sh
63 | $ sudo apt-get update
64 | ```
65 |
66 | 2. Kemudian pasang `git`:
67 |
68 | ```sh
69 | $ sudo apt-get install git-all
70 | ```
71 |
72 | > `apt` merupakan alatan bagi menguruskan pakej pada OS Linux yang berasaskan debian seperti Ubuntu dan LinuxMint.
73 |
74 | ### Cara 2: Menggunakan `yum`
75 |
76 | 1. Kemaskini pakej `yum` terlebih dahulu:
77 |
78 | ```sh
79 | $ sudo yum update
80 | ```
81 |
82 | 2. Kemudian pasang `git`:
83 |
84 | Terdapat 2 cara untuk memasang Git di GNU/Linux: pengurus pakej dan kompil ***(compile)*** kod sumber.
85 |
86 | #### Cara 1: Pengurus Pakej
87 |
88 | Git biasanya boleh didapati di kebanyakan pengurus pakej ***(package manager)*** distro Linux. Berikut langkah untuk memasang Git di Fedora 23:
89 |
90 | Pastikan anda mengemaskini sistem terlebih dahulu:
91 |
92 | ```sh
93 | $ sudo dnf update
94 | ```
95 |
96 | Seterusnya, jalankan arahan untuk memasang Git:
97 |
98 | ```sh
99 | $ sudo dnf install git-all
100 | ```
101 |
102 | Dengan itu Git telah dipasang ke dalam sistem. Untuk mengetahui versi yang dipasang, jalankan arahan berikut:
103 |
104 | ```sh
105 | $ git --version
106 | ```
107 |
108 | #### Cara 2: Kompil Kod Sumber
109 |
110 | ```sh
111 | $ sudo yum install git-all
112 | ```
113 | `yum` merupakan alatan bagi menguruskan pakej rpm pada OS Linux yang berasaskan redhat seperti Fedora dan CentOS.
114 |
115 |
--------------------------------------------------------------------------------
/content/membina_ahli_pasukan.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 3 - Pengurusan Projek Dengan Github
2 |
3 | # Membina Ahli Pasukan
--------------------------------------------------------------------------------
/content/membina_release.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Membina Release
--------------------------------------------------------------------------------
/content/membina_sebuah_repo_repositori_baru.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Membina Sebuah Repo (Repositori) Baru
--------------------------------------------------------------------------------
/content/mempersiapkan_akaun_dengan_kunci_ssh.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | ## Mempersiapkan Akaun dengan Kunci SSH
4 |
5 | ### Windows
6 | A ) Menggunakan Git Bash. Muat turun di [https://git-scm.com/]
7 |
8 | 1. Jana Kunci SSH
9 |
10 | Buka *Git Bash* dan masukkan arahan berikut:
11 |
12 | ```sh
13 | $ ssh-keygen -t rsa -b 4096 -C "emel.anda@domain.tld"
14 | ```
15 |
16 | Seterusnya, tentukan di mana kunci akan disimpan. Sebaiknya kekalkan pada lokasi yang telah dipilih oleh sistem.
17 |
18 | ```
19 | Enter file in which to save the key (C:\Users\anda\.ssh\id_rsa): [_tekan_Enter_]
20 | ```
21 |
22 | Rekakan frasa laluan anda.
23 |
24 | ```
25 | Enter passphrase (empty for no passphrase):
26 | Enter same passphrase again:
27 | ```
28 |
29 | ```
30 | Your identification has been saved in C:\Users\anda\.ssh\id_rsa
31 | Your public key has been saved in C:\Users\anda\.ssh\id_rsa.pub
32 | The key fingerprint is:
33 | 28:56:05:40:d6:ad:41:d7:72:f9:05:5a:0c:84:c0:86 emel.anda@domain.tld
34 | The key's randomart image is:
35 | +--[ RSA 2048]----+
36 | | .+*++o+o+o. |
37 | | .E =o+ +o. . |
38 | | ..o o.. . |
39 | | ... . |
40 | | o . S |
41 | | . . |
42 | | |
43 | | |
44 | | |
45 | +-----------------+
46 | ```
47 |
48 | Kini kunci telah tersedia. Terdapat 2 fail di dalam direktori .ssh/ iaitu 'id_rsa' dan 'id_rsa.pub'.
49 |
50 | ### OS X & Linux
51 |
52 | > Cara menjana kunci SSH pada kedua-dua sistem pengoperasian adalah sama dengan terdapat sedikit perbezaan kecil.
53 |
54 | 1. Jana Kunci SSH
55 |
56 | Buka *Terminal* dan masukkan arahan berikut:
57 |
58 | ```sh
59 | $ ssh-keygen -t rsa -b 4096 -C "emel.anda@domain.tld"
60 | ```
61 |
62 | Seterusnya, tentukan di mana kunci akan disimpan. Sebaiknya kekalkan pada lokasi yang telah dipilih oleh sistem.
63 |
64 | ```
65 | Enter file in which to save the key (Users/anda/.ssh/id_rsa): [_tekan_Enter_]
66 | ```
67 |
68 | Rekakan frasa laluan anda.
69 |
70 | ```
71 | Enter passphrase (empty for no passphrase):
72 | Enter same passphrase again:
73 | ```
74 |
75 | ```
76 | Your identification has been saved in /Users/anda/.ssh/id_rsa
77 | Your public key has been saved in /Users/anda/.ssh/id_rsa.pub
78 | The key fingerprint is:
79 | 28:56:05:40:d6:ad:41:d7:72:f9:05:5a:0c:84:c0:86 emel.anda@domain.tld
80 | The key's randomart image is:
81 | +--[ RSA 2048]----+
82 | | .+*++o+o+o. |
83 | | .E =o+ +o. . |
84 | | ..o o.. . |
85 | | ... . |
86 | | o . S |
87 | | . . |
88 | | |
89 | | |
90 | | |
91 | +-----------------+
92 | ```
93 |
94 | Kini kunci telah tersedia. Terdapat 2 fail di dalam direktori .ssh/ iaitu 'id_rsa' dan 'id_rsa.pub'.
95 |
96 | 2. Tambah kunci ke ```ssh-agent```
97 |
98 | Pastikan ```ssh-agent``` berjalan di latar belakang.
99 |
100 | ```sh
101 | $ eval "$(ssh-agent -s)"
102 |
103 | ```
104 |
105 | ```sh
106 | $ ssh-add ~/.ssh/id_rsa
107 | ```
108 |
109 | 3. Salin kunci awam 'id_rsa.pub' ke papan keratan *(clipboard)*
110 |
111 | * **OS X**: Gunakan ```pbcopy```:
112 |
113 | ```sh
114 | $ pbcopy < ~/.ssh/id_rsa.pub
115 | ```
116 |
117 | * **Linux**: Gunakan ```xclip```. Pasang ke dalam sistem terlebih dahulu (sekiranya tiada) menggunakan pengurus pakej distro yang anda gunakan sama ada ```apt-get```, ```yum```, atau ```dnf```:
118 |
119 | ```sh
120 | $ sudo dnf install xclip
121 | $ xclip -sel clip < ~/.ssh/id_rsa.pub
122 | ```
123 |
124 | 4. Menambah Kunci ke GitHub
125 |
126 | Log masuk ke github.com. Klik pada imej anda di sebelah kanan atas, dan pergi ke *Settings*. Seterusnya, pada menu sebelah kiri pergi ke *SSH Keys*. Tekan butang *Add SSH Key*.
127 |
128 | Anda boleh menamakan kunci anda dengan sebarang nama yang berkaitan, seperti "Laptop Kerja" atau "Syarikat Sistem Sdn. Bhd.". Sebuah emel akan dihantar ke alamat emel anda sebagai pengesahan penambahan kunci SSH.
129 |
130 | 5. Memastikan Semua Berjalan Lancar
131 |
132 | Setelah melakukan langkah-langkah menjana kunci dan menyalin kunci awam ke GitHub, kini masa untuk cuba membuat sambungan SSH kali pertama.
133 |
134 | Masih di *Terminal*, jalankan arahan berikut:
135 |
136 | ```sh
137 | $ ssh -T git@github.com
138 | ```
139 |
140 | ```sh
141 | The authenticity of host 'github.com (192.30.252.131)' can't be established.
142 | RSA key fingerprint is 28:56:05:40:d6:ad:41:d7:72:f9:05:5a:0c:84:c0:86.
143 | Are you sure you want to continue connecting (yes/no)?
144 | ```
145 |
146 | Pastikan cap jari sepadan seperti yang diberikan semasa menjana kunci. Taip ```yes``` kemudian tekan Enter.
147 |
148 |
149 | ```sh
150 | Warning: Permanently added 'github.com,192.30.252.131' (RSA) to the list of known hosts.
151 | Hi namapenggunaanda! You've successfully authenticated, but GitHub does not provide shell access.
152 | ```
153 |
154 | Jika anda dapat melihat mesej seperti di atas, tahniah! Anda baru sahaja melakukan sambungan SSH ke GitHub dan secara tidak langsung konfigurasi kunci anda berjaya.
155 |
--------------------------------------------------------------------------------
/content/mendaftar_akaun_di_github.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Mendaftar Akaun di Github
4 |
5 | Setelah berbincang dengan rakan sekerja yang terlibat, Johan telah bersetuju untuk menjadikan GitHub sebagai repositori awan untuk projek mereka.
6 |
7 | Johan memulakan membuka akaun dengan membuka pelayar sesawang kegemarannya dan pergi ke https://github.com/. Ruangan pendaftaran berada di sebelah kanan halaman utama. Johan cuma perlu masukkan nama pengguna, emel, dan kata laluan untuk mendaftar. Sebuah emel akan dihantar ke alamat emel yang telah didaftarkan untuk pengaktifan akaun.
8 |
9 | 
10 |
11 | *Halaman utama github.com*
12 |
13 | ## Memilih Pelan dan Harga
14 |
15 | GitHub mempunyai 2 pelan: Peribadi dan Organisasi. Terdapat beberapa pilihan harga yang boleh dipilih sesuai untuk keperluan bagi setiap pelan.
16 |
17 | 
18 |
19 | *Senarai pelan dan kadar harga*
20 |
21 | Kini, Johan sudah mempunyai akaun di GitHub begitu juga dengan rakan sekerja yang akan bekerjasama dengannya. Seterusnya, mereka perlu menghubungkan akaun GitHub dengan Git yang telah terpasang secara lokal dalam komputer dan laptop masing-masing.
22 |
--------------------------------------------------------------------------------
/content/menerima_pull_merge_request.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Menerima Pull/Merge Request
--------------------------------------------------------------------------------
/content/menghantar_pull_merge_request.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Menghantar Pull/Merge Request
--------------------------------------------------------------------------------
/content/milestone.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 3 - Pengurusan Projek Dengan Github
2 |
3 | # Milestone
--------------------------------------------------------------------------------
/content/pengenalan.md:
--------------------------------------------------------------------------------
1 | # Pengenalan
2 |
3 | Projek *Buku Git* ini dimulakan untuk menghasilkan sebuah buku sebagai pengenalan kepada Git. Buku ini kemudian bolehlah digunakan dalam bengkel Git yang diadakan oleh JOMWEB.
4 |
5 | Dengan adanya buku ini, pihak lain bolehlah menggunakannya juga untuk mengajar di kelas, membuat bengkel latihan, mencetak untuk dijual ataupun *apa-apa* sahaja, asalkan ilmu penggunaan Git dalam programming dipanjangkan kepada warga Malaysia.
6 |
7 | ## Turut Membantu Dalam Penulisan
8 |
9 | Sekiranya anda mempunyai kemahiran dan ingin membantu dalam penulisan buku ini, bolehlah menyumbang di [laman Github Buku Git](https://github.com/kidino/buku-git). Buku ini ditulis terus ke Github menggunakan Github Pages, dan penulisannya menggunakan format *Markdown*.
10 |
11 | Lakukan *fork* dan *pull request* di Github untuk menyumbang dari segi penulisan.
12 |
13 | ## Penyumbang
14 |
15 | Ucapan terima kasih kepada mereka yang telah membantu secara langsung dalam projek ini:
16 |
17 | * [Mior Muhammad Zaki](https://github.com/crynobone)
18 | * [Izwan Wahab](https://github.com/robotys)
19 | * [Iszuddin Ismail](https://github.com/kidino)
20 | * [Nurulazrad](https://github.com/nurulazradm)
21 | * [Anasceym](https://github.com/anasceym)
22 | * [Adyromantika](https://github.com/adyromantika)
23 | * [Hasyimibhar](https://github.com/hasyimibhar)
24 |
25 |
26 |
--------------------------------------------------------------------------------
/content/resolve_--_membaiki_konflik_dalam_kerja.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 1 - Bekerja Sendiri
2 |
3 | # Resolve -- Membaiki Konflik dalam Kerja
--------------------------------------------------------------------------------
/content/test-123.md:
--------------------------------------------------------------------------------
1 | Test 123
2 | --------
3 |
4 | 
5 |
6 | **markItUp!** is a javascript over [jQuery](http://www.jquery.com "jQuery Website") plug-in which allow you to turn any textarea in a markup editor.
7 |
8 | **markItUp!** is a lightweight fully customizable engine made to easily fit all developers needs in their CMS, blogs, forums or websites.
9 |
10 | _Html, Textile, Wiki Syntax, Markdown, BBcode_ or even your own Markup system can be easily implemented.
11 |
12 | - integrate it easily
13 | - customize buttons and macros to fit all your need
14 | - customize keyboard shortcuts
15 | - customize toolbar and css look and feel
16 | - skins
17 | - icons
18 | - dropdown menus
19 | - separators
20 | - use the engine from anywhere in the page
21 | - implement any markup language even your own
22 | - implement your own javascript macros even the most advanced
23 | - allows multi-line edition
24 | - preview ajax result dynamically in any markup parser
25 | - offers userfriendly experience and effectiveness
26 |
--------------------------------------------------------------------------------
/content/test-456.md:
--------------------------------------------------------------------------------
1 | # Test 456
2 |
3 | This note demonstrates some of what [Markdown][1] is capable of doing.
4 |
5 | *Note: Feel free to play with this page. Unlike regular notes, this doesn't automatically save itself.*
6 |
7 | ## Basic formatting
8 |
9 | Paragraphs can be written like so. A paragraph is the basic block of Markdown. A paragraph is what text will turn into when there is no reason it should become anything else.
10 |
11 | Paragraphs must be separated by a blank line. Basic formatting of *italics* and **bold** is supported. This *can be **nested** like* so.
12 |
13 | ## Lists
14 |
15 | ### Ordered list
16 |
17 | 1. Item 1
18 | 2. A second item
19 | 3. Number 3
20 | 4. Ⅳ
21 |
22 | *Note: the fourth item uses the Unicode character for [Roman numeral four][2].*
23 |
24 | ### Unordered list
25 |
26 | * An item
27 | * Another item
28 | * Yet another item
29 | * And there's more...
30 |
31 | ## Paragraph modifiers
32 |
33 | ### Code block
34 |
35 | Code blocks are very useful for developers and other people who look at code or other things that are written in plain text. As you can see, it uses a fixed-width font.
36 |
37 | You can also make `inline code` to add code into other things.
38 |
39 | ### Quote
40 |
41 | > Here is a quote. What this is should be self explanatory. Quotes are automatically indented when they are used.
42 |
43 | ## Headings
44 |
45 | There are six levels of headings. They correspond with the six levels of HTML headings. You've probably noticed them already in the page. Each level down uses one more hash character.
46 |
47 | ### Headings *can* also contain **formatting**
48 |
49 | ### They can even contain `inline code`
50 |
51 | Of course, demonstrating what headings look like messes up the structure of the page.
52 |
53 | I don't recommend using more than three or four levels of headings here, because, when you're smallest heading isn't too small, and you're largest heading isn't too big, and you want each size up to look noticeably larger and more important, there there are only so many sizes that you can use.
54 |
55 | ## URLs
56 |
57 | URLs can be made in a handful of ways:
58 |
59 | * A named link to [MarkItDown][3]. The easiest way to do these is to select what you want to make a link and hit `Ctrl+L`.
60 | * Another named link to [MarkItDown](http://www.markitdown.net/)
61 | * Sometimes you just want a URL like .
62 |
63 | ## Horizontal rule
64 |
65 | A horizontal rule is a line that goes across the middle of the page.
66 |
67 | ---
68 |
69 | It's sometimes handy for breaking things up.
70 |
71 | ## Images
72 |
73 | Markdown can also contain images. I'll need to add something here sometime.
74 |
75 | ## Finally
76 |
77 | There's actually a lot more to Markdown than this. See the official [introduction][4] and [syntax][5] for more information. However, be aware that this is not using the official implementation, and this might work subtly differently in some of the little things.
78 |
79 |
80 | [1]: http://daringfireball.net/projects/markdown/
81 | [2]: http://www.fileformat.info/info/unicode/char/2163/index.htm
82 | [3]: http://www.markitdown.net/
83 | [4]: http://daringfireball.net/projects/markdown/basics
84 | [5]: http://daringfireball.net/projects/markdown/syntax
85 |
--------------------------------------------------------------------------------
/content/web_hook.md:
--------------------------------------------------------------------------------
1 | #### Bahagian 2 - Bekerja dengan Server Repository (seperti Github, Gitlab, Bitbucket)
2 |
3 | # Web Hook
--------------------------------------------------------------------------------
/css/base.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: 'Libre Baskerville', serif;
3 | font-size: 15px;
4 | }
5 |
6 | .content code {
7 | font-size: 10pt;
8 | font-family: 'Source Code Pro';
9 | }
10 |
11 | .content code .code-output {
12 | color: #999999;
13 | }
14 |
15 | .content code .code-dollar {
16 | display: inline-block;
17 | margin-right: 10px;
18 | color: #009900;
19 | -moz-user-select: none;
20 | -khtml-user-select: none;
21 | -webkit-user-select: none;
22 | -o-user-select: none;
23 | }
24 |
25 | .top-title {
26 | background-color: #f0f0f0;
27 | }
28 | .content {
29 | max-width: 700px;
30 | margin: auto;
31 | padding: 0;
32 | }
33 |
34 | .content h1 {
35 | font-size: 28pt;
36 | line-height: 36pt;
37 | text-transform: uppercase;
38 | letter-spacing: 3pt;
39 | border-top: 1px solid #999999;
40 | padding-top: 5pt;
41 | padding-bottom: 0;
42 | margin-bottom: 50pt;
43 | }
44 |
45 | .content h2 {
46 | font-size: 14pt;
47 | line-height: 22pt;
48 | text-transform: uppercase;
49 | letter-spacing: 1pt;
50 | font-weight: 700;
51 | padding: 0;
52 | padding-bottom: 5pt;
53 | margin-top: 40pt;
54 | margin-bottom: 10pt;
55 | border-bottom: 1px solid #dddddd;
56 | }
57 |
58 | .content h3 {
59 | font-size: 14pt;
60 | line-height: 22pt;
61 | letter-spacing: 1pt;
62 | font-weight: 700;
63 | padding: 0;
64 | margin-top: 30pt;
65 | margin-bottom: 10pt;
66 | }
67 |
68 | .content p {
69 | font-size: 14pt;
70 | line-height: 22pt;
71 | margin-top: 0;
72 | margin-bottom: 20pt;
73 | }
74 |
75 | .content ul,
76 | .content ol {
77 | margin-bottom: 20pt;
78 | }
79 |
80 | .content ul li,
81 | .content ol li {
82 | font-size: 14pt;
83 | line-height: 22pt;
84 | }
85 |
86 | .content code {
87 | color: #333333;
88 | font-size: 14pt;
89 | background-color: transparent;
90 | }
91 |
92 | .content pre {
93 | margin-bottom: 20pt;
94 | }
95 |
96 | .content pre code {
97 | font-size: 10pt;
98 | }
99 |
100 | .sidebar {
101 | padding-top: 30px;
102 | }
103 |
104 | .sidebar ul {
105 | list-style-type: none;
106 | margin: 0;
107 | line-height: 1.8em;
108 | padding-left: 1em;
109 | }
110 |
111 | .sidebar ul {
112 | list-style-type: none;
113 | margin: 0;
114 | line-height: 1.8em;
115 | padding-left: 1em;
116 | }
117 |
118 | .sidebar .menu-root {
119 | padding-left: 0;
120 | }
121 |
122 | .sidebar .menu-sub {
123 | padding-left: 1em;
124 | font-size: 0.85em;
125 | }
126 |
--------------------------------------------------------------------------------
/css/md-foghorn.css:
--------------------------------------------------------------------------------
1 | @import url(http://fonts.googleapis.com/css?family=Vollkorn:400,400italic,700,700italic&subset=latin);
2 |
3 | html, body {
4 | padding:1em;
5 | margin:auto;
6 | background:#fefefe;
7 | }
8 | body {
9 | font: 1.3em "Vollkorn", Palatino, Times;
10 | color: #333;
11 | line-height: 1.4;
12 | text-align: justify;
13 | }
14 | header, nav, article, footer {
15 | width: 700px;
16 | margin:0 auto;
17 | }
18 | article {
19 | margin-top: 4em;
20 | margin-bottom: 4em;
21 | min-height: 400px;
22 | }
23 | footer {
24 | margin-bottom:50px;
25 | }
26 | video {
27 | margin: 2em 0;
28 | border:1px solid #ddd;
29 | }
30 |
31 | nav {
32 | font-size: .9em;
33 | font-style: italic;
34 | border-bottom: 1px solid #ddd;
35 | padding: 1em 0;
36 | }
37 | nav p {
38 | margin: 0;
39 | }
40 |
41 | /* Typography
42 | -------------------------------------------------------- */
43 |
44 | h1 {
45 | margin-top: 0;
46 | font-weight: normal;
47 | }
48 | h2 {
49 | font-weight: normal;
50 | }
51 | h3 {
52 | font-weight: normal;
53 | font-style: italic;
54 | margin-top:3em;
55 | }
56 | p {
57 | margin-top:0;
58 | -webkit-hypens:auto;
59 | -moz-hypens:auto;
60 | hyphens:auto;
61 | }
62 | ul {
63 | list-style: square;
64 | padding-left:1.2em;
65 | }
66 | ol {
67 | padding-left:1.2em;
68 | }
69 | blockquote {
70 | margin-left: 1em;
71 | padding-left: 1em;
72 | border-left: 1px solid #ddd;
73 | }
74 | code {
75 | font-family: "Consolas", "Menlo", "Monaco", monospace, serif;
76 | font-size: .9em;
77 | background: white;
78 | }
79 | a {
80 | color: #2484c1;
81 | text-decoration: none;
82 | }
83 | a:hover {
84 | text-decoration: underline;
85 | }
86 | a img {
87 | border:none;
88 | }
89 | h1 a, h1 a:hover {
90 | color: #333;
91 | text-decoration: none;
92 | }
93 | hr {
94 | color : #ddd;
95 | height : 1px;
96 | margin: 2em 0;
97 | border-top : solid 1px #ddd;
98 | border-bottom : none;
99 | border-left: 0;
100 | border-right: 0;
101 | }
102 | p#heart{
103 | font-size: 2em;
104 | line-height: 1;
105 | text-align: center;
106 | color: #ccc;
107 | }
108 | .red {
109 | color:#B50000;
110 | }
111 |
112 | /* Home Page
113 | --------------------------- */
114 |
115 | body#index li {
116 | margin-bottom: 1em;
117 | }
118 |
119 |
120 | /* iPad
121 | -------------------------------------------------------- */
122 | @media only screen and (max-device-width: 1024px) {
123 | body {
124 | font-size: 120%;
125 | line-height: 1.4;
126 | }
127 | } /* @iPad */
128 |
129 | /* iPhone
130 | -------------------------------------------------------- */
131 | @media only screen and (max-device-width: 480px) {
132 | body {
133 | text-align: left;
134 | }
135 | article, footer {
136 | width: auto;
137 | }
138 | article {
139 | padding: 0 10px;
140 | }
141 | } /* @iPhone */
142 |
--------------------------------------------------------------------------------
/css/md-simonlc.css:
--------------------------------------------------------------------------------
1 | html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
2 |
3 | body{
4 | color:#444;
5 | font-family:Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif;
6 | font-size:12px;
7 | line-height:1.5em;
8 | padding:1em;
9 | margin:auto;
10 | background:#fefefe;
11 | }
12 |
13 | a{ color: #0645ad; text-decoration:none;}
14 | a:visited{ color: #0b0080; }
15 | a:hover{ color: #06e; }
16 | a:active{ color:#faa700; }
17 | a:focus{ outline: thin dotted; }
18 | a:hover, a:active{ outline: 0; }
19 |
20 | ::-moz-selection{background:rgba(255,255,0,0.3);color:#000}
21 | ::selection{background:rgba(255,255,0,0.3);color:#000}
22 |
23 | a::-moz-selection{background:rgba(255,255,0,0.3);color:#0645ad}
24 | a::selection{background:rgba(255,255,0,0.3);color:#0645ad}
25 |
26 | p{
27 | margin:1em 0;
28 | }
29 |
30 | img{
31 | max-width:100%;
32 | }
33 |
34 | h1,h2,h3,h4,h5,h6{
35 | font-weight:normal;
36 | color:#111;
37 | line-height:1em;
38 | }
39 | h4,h5,h6{ font-weight: bold; }
40 | h1{ font-size:2.5em; }
41 | h2{ font-size:2em; }
42 | h3{ font-size:1.5em; }
43 | h4{ font-size:1.2em; }
44 | h5{ font-size:1em; }
45 | h6{ font-size:0.9em; }
46 |
47 | blockquote{
48 | color:#666666;
49 | margin:0;
50 | padding-left: 3em;
51 | border-left: 0.5em #EEE solid;
52 | }
53 | hr { display: block; height: 2px; border: 0; border-top: 1px solid #aaa;border-bottom: 1px solid #eee; margin: 1em 0; padding: 0; }
54 | pre, code, kbd, samp { color: #000; font-family: monospace, monospace; _font-family: 'courier new', monospace; font-size: 0.98em; }
55 | pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
56 |
57 | b, strong { font-weight: bold; }
58 |
59 | dfn { font-style: italic; }
60 |
61 | ins { background: #ff9; color: #000; text-decoration: none; }
62 |
63 | mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }
64 |
65 | sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
66 | sup { top: -0.5em; }
67 | sub { bottom: -0.25em; }
68 |
69 | ul, ol { margin: 1em 0; padding: 0 0 0 2em; }
70 | li p:last-child { margin:0 }
71 | dd { margin: 0 0 0 2em; }
72 |
73 | img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }
74 |
75 | table { border-collapse: collapse; border-spacing: 0; }
76 | td { vertical-align: top; }
77 |
78 | @media only screen and (min-width: 480px) {
79 | body{font-size:14px;}
80 | }
81 |
82 | @media only screen and (min-width: 768px) {
83 | body{font-size:16px;}
84 | }
85 |
86 | @media print {
87 | * { background: transparent !important; color: black !important; filter:none !important; -ms-filter: none !important; }
88 | body{font-size:12pt; max-width:100%;}
89 | a, a:visited { text-decoration: underline; }
90 | hr { height: 1px; border:0; border-bottom:1px solid black; }
91 | a[href]:after { content: " (" attr(href) ")"; }
92 | abbr[title]:after { content: " (" attr(title) ")"; }
93 | .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
94 | pre, blockquote { border: 1px solid #999; padding-right: 1em; page-break-inside: avoid; }
95 | tr, img { page-break-inside: avoid; }
96 | img { max-width: 100% !important; }
97 | @page :left { margin: 15mm 20mm 15mm 10mm; }
98 | @page :right { margin: 15mm 10mm 15mm 20mm; }
99 | p, h2, h3 { orphans: 3; widows: 3; }
100 | h2, h3 { page-break-after: avoid; }
101 | }
--------------------------------------------------------------------------------
/images/buku-git-github-frontpage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/buku-git-github-frontpage.png
--------------------------------------------------------------------------------
/images/buku-git-pelan-harga-github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/buku-git-pelan-harga-github.png
--------------------------------------------------------------------------------
/images/git-bash-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/git-bash-icon.png
--------------------------------------------------------------------------------
/images/git-init-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/git-init-1.png
--------------------------------------------------------------------------------
/images/git-init-git-status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/git-init-git-status.png
--------------------------------------------------------------------------------
/images/git-init-initialized.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/git-init-initialized.png
--------------------------------------------------------------------------------
/images/git-status-no-git.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/git-status-no-git.png
--------------------------------------------------------------------------------
/images/test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kidino/buku-git/c75fe4d1ca1db6a1225dbd140c8619a75c42b018/images/test.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Projek Buku Git
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |