GitHub

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 3 dari 8
  • 30 menit
  • 4 soal kuis

Membuat repository, README, Markdown, .gitignore, dan lisensi

Di bab ini (10 bagian)
  1. Tujuan
  2. Membuat repository di GitHub
  3. Clone atau buat lokal lalu push?
  4. Anatomi repository
  5. README yang baik
  6. Sintaks Markdown
  7. .gitignore dan lisensi
  8. Coba sendiri
  9. Kesalahan umum
  10. Rangkuman

Tujuan bab ini

  • Membuat repository di GitHub dengan pilihan visibilitas, README, .gitignore, dan lisensi yang tepat.
  • Memahami dua jalur memulai: clone repo dari GitHub atau membuat repo lokal lalu push.
  • Mengenal file standar sebuah repo dan menulis README dengan Markdown.
  • Memakai .gitignore dengan benar dan memilih lisensi MIT, Apache-2.0, atau GPL.

Membuat repository di GitHub

Repository adalah wadah proyek: kode, riwayat commit, dan dokumentasinya. Cara membuatnya lewat website:

  1. Klik tombol + di kanan atas, pilih New repository.
  2. Isi Repository name, pakai huruf kecil dan tanda hubung, misalnya belajar-github. Tambahkan deskripsi singkat.
  3. Pilih visibilitas Public atau Private.
  4. Aktifkan opsi menambah README agar repo tidak kosong.
  5. Pilih template .gitignore sesuai bahasa (misalnya Node atau Python) dan license bila perlu.
  6. Klik Create repository.

Public atau Private? Public bisa dilihat semua orang, cocok untuk portofolio dan open source. Private hanya bisa diakses kamu dan kolaborator yang diundang, cocok untuk tugas kuliah atau proyek internal. Visibilitas bisa diubah nanti di Settings.

Clone atau buat lokal lalu push?

Ada dua jalur, pilih sesuai kondisi.

Jalur 1: repo dibuat di GitHub dulu, lalu clone. Cocok untuk proyek baru. Ambil alamatnya dari tombol hijau Code:

git clone git@github.com:rani-dev/belajar-github.git
cd belajar-github
Cloning into 'belajar-github'...

Remote origin langsung terpasang dan branch main sudah terhubung ke origin/main.

Jalur 2: proyek sudah ada di laptop. Buat repo kosong di GitHub (jangan centang README, .gitignore, atau lisensi supaya tidak bentrok), lalu GitHub akan menampilkan petunjuk "push an existing repository from the command line". Isinya kira-kira:

git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin git@github.com:rani-dev/belajar-github.git
git push -u origin main

Baris terakhir output push memuat:

branch 'main' set up to track 'origin/main'.

Opsi -u mengingat pasangan branch lokal dan remote, jadi push berikutnya cukup git push. Penjelasan detail add, commit, dan remote ada di kelas Git.

Anatomi repository

Proyek yang rapi biasanya punya struktur seperti ini:

belajar-github/
├── .github/
│   └── workflows/     # workflow GitHub Actions
├── docs/              # dokumentasi tambahan
├── src/               # kode sumber
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
└── README.md
  • README.md: halaman depan repo, tampil otomatis di tab Code.
  • LICENSE: aturan hukum pemakaian kodemu. GitHub mendeteksinya dan menampilkan nama lisensi di sidebar repo.
  • .gitignore: daftar file yang tidak ikut dilacak Git.
  • CONTRIBUTING.md: panduan untuk kontributor. GitHub menautkannya saat orang membuat issue atau pull request.
  • docs/: dokumentasi yang terlalu panjang untuk README.

Folder .git/ tidak ikut terlihat di GitHub. Itu database Git lokal yang dibuat git init, dan menghapusnya berarti menghapus seluruh riwayat di laptop.

README yang baik

README adalah kesan pertama. Orang memutuskan dalam beberapa detik apakah proyekmu layak dicoba. README yang baik menjawab:

  1. Ini apa? Satu-dua kalimat tujuan proyek.
  2. Seperti apa? Screenshot atau link demo.
  3. Cara memasang dan menjalankan. Perintah yang bisa langsung di-copy.
  4. Cara memakai. Contoh singkat.
  5. Cara berkontribusi dan lisensi.

Sintaks Markdown

Markdown dipakai di README, issue, pull request, dan komentar. GitHub memakai GitHub Flavored Markdown (GFM) yang menambahkan tabel dan task list.

# Judul besar
## Subjudul

**Tebal**, *miring*, dan `kode singkat`.

- Item list
- Item lain

1. Langkah pertama
2. Langkah kedua

[Dokumentasi GitHub](https://docs.github.com)
![Tampilan aplikasi](docs/screenshot.png)

```bash
npm install
npm run dev
```

| Perintah | Fungsi |
|---|---|
| `npm test` | Menjalankan tes |

- [x] Halaman login
- [ ] Halaman profil

> Catatan: butuh Node.js 20 ke atas.

Beberapa hal yang sering terlewat: beri baris kosong antar paragraf, tulis nama bahasa setelah tiga backtick supaya kode berwarna, dan pakai path relatif untuk gambar di dalam repo. Task list - [ ] di issue atau pull request bahkan bisa dicentang langsung di browser.

.gitignore dan lisensi

.gitignore berisi pola file yang diabaikan Git: dependensi, hasil build, file sistem, dan terutama rahasia.

node_modules/
dist/
.DS_Store
.env

Template siap pakai untuk banyak bahasa tersedia saat membuat repo, sumbernya repository resmi github/gitignore. Penting: .gitignore hanya berlaku untuk file yang belum dilacak. Kalau .env sudah terlanjur di-commit, menambahkannya ke .gitignore tidak menghapusnya. Lepaskan dari pelacakan dengan git rm --cached .env, commit, lalu ganti kredensial di dalamnya karena riwayat lama masih menyimpannya.

Lisensi. Tanpa lisensi, kodemu secara hukum tetap hak cipta penuh milikmu, dan orang lain tidak punya izin resmi untuk memakai atau memodifikasinya meskipun repo publik. Tiga yang paling umum:

  • MIT: paling permisif. Bebas dipakai, diubah, dan dijual, asal pemberitahuan hak cipta dan lisensi tetap dicantumkan.
  • Apache-2.0: permisif seperti MIT, ditambah pemberian lisensi paten yang eksplisit dan kewajiban mencatat perubahan.
  • GPL-3.0: copyleft. Karya turunan yang didistribusikan wajib dibuka dengan lisensi GPL juga.

Bingung? Situs choosealicense.com (dikelola GitHub) membantu memilih. Lupa menambah lisensi? Di tab Code pilih Add file > Create new file, ketik nama LICENSE, lalu klik Choose a license template.

Coba sendiri

Buktikan cara kerja .gitignore di laptopmu:

mkdir belajar-github
cd belajar-github
git init
echo "# belajar-github" > README.md
printf 'node_modules/\n.env\n' > .gitignore
mkdir node_modules
touch node_modules/a.js .env index.js
git status --short

Output yang diharapkan, .env dan node_modules/ tidak muncul:

?? .gitignore
?? README.md
?? index.js

Lanjutkan commit dan sambungkan ke repo kosong yang kamu buat di GitHub (ganti rani-dev dengan username-mu):

git add .
git commit -m "Initial commit"
git remote add origin git@github.com:rani-dev/belajar-github.git
git remote -v
git push -u origin main
origin	git@github.com:rani-dev/belajar-github.git (fetch)
origin	git@github.com:rani-dev/belajar-github.git (push)

Refresh halaman repo di browser. README-mu kini tampil di tab Code.

Kesalahan umum

  • Membuat repo dengan README lalu push proyek lokal yang berbeda. Riwayatnya tidak nyambung dan push ditolak. Untuk jalur 2, buat repo kosong.
  • Menambah .env ke .gitignore setelah di-commit. File tetap dilacak sampai di-git rm --cached, dan kredensialnya harus diganti.
  • Repo publik tanpa lisensi. Orang bisa melihat, tapi tidak punya izin legal untuk memakai.
  • README cuma judul. Tambahkan tujuan, cara install, dan cara pakai.

Rangkuman

  • Buat repo lewat + > New repository, tentukan Public/Private, README, template .gitignore, dan lisensi.
  • Repo baru di GitHub cukup di-clone, proyek lokal disambungkan dengan git remote add origin lalu git push -u origin main ke repo kosong.
  • File standar repo: README.md, LICENSE, .gitignore, CONTRIBUTING.md, dan folder docs.
  • Markdown (GFM) mendukung heading, list, link, gambar, code block, tabel, dan task list.
  • .gitignore hanya untuk file yang belum dilacak, dan lisensi MIT, Apache-2.0, atau GPL menentukan hak orang lain atas kodemu.

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Kuis (4 soal)

Cek pemahaman

  1. 1File apa saja yang muncul pada output git status --short terakhir?

    $ git init
    $ echo "# belajar-github" > README.md
    $ printf 'node_modules/\n.env\n' > .gitignore
    $ mkdir node_modules
    $ touch node_modules/a.js .env index.js
    $ git status --short
  2. 2Lisensi mana yang mewajibkan karya turunan yang didistribusikan memakai lisensi yang sama?

  3. 3Proyek sudah ada di laptop. Repo GitHub seperti apa yang sebaiknya dibuat sebelum push?

  4. 4Menambahkan .env ke .gitignore otomatis menghapus .env yang sudah pernah di-commit dari pelacakan.