Panduan Git Clone, Add, Commit, Push: Cara Upload Project ke GitHub 2026

| | Git - Version Control
Panduan Git Clone, Add, Commit, Push: Cara Upload Project ke GitHub 2026

Git adalah version control yang melacak setiap perubahan kode. GitHub adalah layanan hosting untuk repository Git. panduan ini akan mengajarkan workflow dasar Git dari nol sampai project kalian nangkring di GitHub. sebelum mulai, pastikan Git sudah terinstal, jika belum ikuti cara install Git di Windows.

workflow cloneaddcommitpush adalah rutinitas yang saya lakukan puluhan kali dalam seminggu. awalnya setiap langkah terasa asing, tapi setelah memahami alurnya, kode kerja di folder → stage → snapshot (commit) → upload (push), semuanya jadi kebiasaan 🙂. di artikel ini, alur itu kita ikuti dari nol, persis seperti yang saya jalani setiap hari di 2026.

Daftar Isi

1. Setup Sekali Saja: Config dan Auth 2026

jika Git baru diinstall, maka atur identitas dulu, kalau tidak commit akan protes:

git --version
# git version 2.45.0.windows.1

git config --global user.name "Nama Kalian"
git config --global user.email "[email protected]"

# biar branch default jadi main, bukan master
git config --global init.defaultBranch main

# cek
git config --global --list

di 2026, GitHub sudah lama tidak terima password biasa untuk HTTPS. ada dua cara login yang benar:

Opsi A: HTTPS dengan Personal Access Token (PAT):

  1. buka GitHub → SettingsDeveloper settingsPersonal access tokensTokens (classic)
  2. Generate new token → centang repo → copy tokennya (dia cuma muncul sekali)
  3. saat git push minta password, paste token itu sebagai password, bukan password akun

Opsi B: SSH (saya pakai ini untuk harian):

ssh-keygen -t ed25519 -C "[email protected]"
# enter enter
cat ~/.ssh/id_ed25519.pub
# copy isinya ke GitHub → Settings → SSH and GPG keys → New SSH key

# test
ssh -T [email protected]
# Hi username! You've successfully authenticated

kalau sudah pakai SSH, URL remote jadi [email protected]:username/repo.git bukan https://. kalau sudah terlanjur HTTPS, ganti dengan git remote set-url origin [email protected]:username/repo.git.

tip 2026: install gh (GitHub CLI) biar login cukup gh auth login dan bikin repo langsung gh repo create nama --public --source=. --push, tidak perlu buka browser.

2. Clone Repository yang Sudah Ada

jika repository sudah ada di GitHub dan kalian mau lanjutkan di laptop, maka pakai clone:

git clone https://github.com/username/nama-repo.git
cd nama-repo

atau dengan SSH:

git clone [email protected]:username/nama-repo.git

kalau repo besar dan mau cepat untuk coba saja, tambah --depth 1 biar history tidak semua ke-download:

git clone --depth 1 https://github.com/username/nama-repo.git

setelah clone, folder sudah otomatis ada .git di dalamnya, dan git remote -v akan nunjuk ke URL GitHub. kalian bisa langsung git status tanpa init lagi.

3. Init Repository Baru dari Folder Lokal

jika project sudah ada di laptop tapi belum di-Git, maka pakai init:

cd project-ku
git init
# Initialized empty Git repository in C:/project-ku/.git/

git remote add origin https://github.com/username/nama-repo.git
# atau SSH
# git remote add origin [email protected]:username/nama-repo.git

git remote -v
# cek remote sudah benar

satu folder cuma butuh satu kali git init. kalau tidak sengaja init di dalam folder yang sudah ada .git di atasnya, akan jadi nested repo dan bikin bingung, cek dengan git status kalau muncul fatal: not a git repository berarti belum di folder yang benar.

4. Cek Status dengan git status

jika sudah ada perubahan, maka git status adalah perintah yang paling sering saya ketik:

git status

keluarannya ada tiga kelompok:

  • Untracked files → file baru yang belum pernah di-add
  • Changes not staged for commit → file yang sudah pernah di-commit tapi dimodifikasi dan belum di-add
  • Changes to be committed → file yang sudah di-add dan siap di-commit
git status -s
# -s = short, lebih ringkas
# ?? = untracked, M = modified, A = added, D = deleted

biasakan git status sebelum add dan sebelum commit, biar tidak ada file yang ketinggalan atau malah file .env ikut ke-push.

5. Add: Pilih File ke Staging

jika sudah tahu file apa yang berubah, maka add untuk masukkan ke staging area, ibarat keranjang sebelum di-checkout:

git add index.html          # stage satu file
git add src/app.js          # stage file di folder
git add src/*.js            # stage semua .js di src
git add .                   # stage semua perubahan di folder ini
git add -A                  # stage semua termasuk file yang dihapus

cek lagi:

git status
# sekarang file pindah ke Changes to be committed (hijau)

kalau salah add, bisa batalin:

git restore --staged index.html   # keluarkan dari staging (Git 2.23+)
# atau cara lama
git reset HEAD index.html

jangan add . sebelum cek .gitignore. kalau .env atau node_modules belum di-ignore, mereka akan ikut ke staging dan ukurannya bisa ratusan MB.

6. Commit: Simpan Snapshot

jika file sudah di-staging, maka commit untuk simpan snapshot ke history lokal:

git commit -m "Tambah fitur login"

-m untuk pesan satu baris. untuk pesan panjang, pakai editor:

git commit
# akan buka editor, tulis:
# Tambah fitur login
#
# - Form login dengan validasi
# - Session handling
# - Redirect ke dashboard

atau satu perintah dengan dua -m:

git commit -m "Tambah fitur login" -m "- Form login dengan validasi
- Session handling
- Redirect ke dashboard"

aturan pesan yang saya pakai di 2026 (biar enak dibaca tim dan di git log):

  • pakai imperatif: Tambah bukan Menambahkan atau Added
  • baris pertama maksimal 50 karakter, baris kedua kosong, baru detail
  • contoh: fix: atasi validasi email kosong, feat: tambah export excel

cek history:

git log --oneline -5
# a1b2c3d Tambah fitur login
# 9f8e7d6 Initial commit

git show HEAD
# lihat isi commit terakhir

kalau salah pesan commit terakhir dan belum di-push:

git commit --amend -m "Tambah fitur login dengan validasi"

7. Push: Upload ke GitHub

jika commit sudah di lokal, maka push untuk kirim ke GitHub:

git push origin main        # upload ke branch main di remote origin
git push origin master      # kalau repo lama masih pakai master

pertama kali push dari repo baru, pakai -u untuk set upstream:

git push -u origin main
# selanjutnya cukup
git push

origin itu nama default remote saat clone atau remote add. cek dengan git remote -v. main itu nama branch. di 2026 semua repo baru GitHub defaultnya main, kalau kalian masih lihat master berarti repo lama, bisa ganti dengan git branch -M main.

kalau push ditolak karena remote lebih baru (misal teman sudah push duluan), jangan pakai --force, tapi pull dulu:

git pull --rebase origin main
# selesaikan conflict kalau ada
git push

8. Pull: Ambil Update Terbaru

jika kerja bareng tim atau pindah laptop, maka biasakan pull sebelum mulai coding:

git pull origin main

pull itu gabungan fetch + merge. kalau mau history lebih rapi tanpa commit merge, pakai rebase:

git pull --rebase origin main

bedanya: merge bikin commit Merge branch 'main'... sedangkan rebase susun commit kalian di atas commit terbaru, history jadi lurus. saya pakai rebase untuk pull harian, merge hanya untuk gabung branch fitur.

kalau cuma mau lihat ada update apa tanpa langsung merge:

git fetch origin
git log --oneline main..origin/main
# lihat commit apa yang ada di remote tapi belum di lokal

9. Contoh Lengkap Upload Project Baru

jika kalian punya folder project-saya yang sudah ada file dan mau jadi repo GitHub baru, maka ini langkah yang saya lakukan tiap kali:

# 1. Buat repo baru di github.com → New repository → nama project-saya
#    JANGAN centang Add README, .gitignore, atau license biar kosong

# 2. Di terminal, masuk folder project
cd project-saya

# 3. Init dan atur branch ke main
git init
git branch -M main

# 4. Buat .gitignore dulu sebelum add
echo "node_modules/
.env
vendor/
__pycache__/
*.log
dist/
.venv/" > .gitignore

# 5. Add, commit
git add .
git status
# cek, pastikan .env tidak ikut hijau
git commit -m "Initial commit"

# 6. Hubungkan ke GitHub dan push
git remote add origin https://github.com/username/project-saya.git
# atau SSH: git remote add origin [email protected]:username/project-saya.git

git push -u origin main

kalau pakai GitHub CLI lebih pendek:

cd project-saya
git init
git add .
git commit -m "Initial commit"
gh repo create project-saya --public --source=. --push
# langsung jadi repo dan ter-push

setelah sukses, cek di github.com/username/project-saya, file sudah ada. workflow harian setelah itu cuma:

git status
git add .
git commit -m "Update fitur X"
git push

10. .gitignore Biar Tidak Bocor

jika add . tanpa .gitignore, maka file sensitif bisa bocor ke GitHub. buat file .gitignore di root project sebelum add:

# dependencies
node_modules/
vendor/
.venv/
__pycache__/

# env dan secret
.env
.env.local
*.key

# build
dist/
build/
*.log
*.tmp

# OS
.DS_Store
Thumbs.db

cek apakah sudah ke-ignore:

git status --ignored
# file yang di-ignore akan muncul di sini

git check-ignore -v .env
# .gitignore:3:.env  .env  → berarti sudah ke-ignore baris 3

kalau file sudah terlanjur ke-commit sebelum di-ignore, tambahkan ke .gitignore saja tidak cukup, harus hapus dari history:

git rm --cached .env
git commit -m "Hapus .env dari tracking"

11. Troubleshooting 2026 yang Paling Sering

jika push atau pull error, maka cek ini dulu, 90 persen selesai di sini:

ErrorPenyebabSolusi
Authentication failedpakai password biasaganti pakai PAT atau SSH, gh auth login paling gampang
remote: Support for password authentication was removedGitHub tolak passwordbuat PAT classic dengan scope repo
fatal: not a git repositorybelum init atau clonegit init atau cd ke folder yang ada .git
error: failed to push, updates were rejectedremote lebih barugit pull --rebase origin main lalu push lagi
! [rejected] main -> main (fetch first)sama seperti di atasjangan --force kalau kerja tim
The following untracked files would be overwrittenfile lokal bentrokgit stash dulu atau git clean -fd kalau yakin
Permission denied (publickey)SSH key belum di-addcat ~/.ssh/id_ed25519.pub lalu add ke GitHub SSH keys

pengalaman saya: error paling sering di Windows adalah LF will be replaced by CRLF. itu bukan error, cuma warning line ending. atasi dengan git config --global core.autocrlf true di Windows, atau input di Mac/Linux, biar tidak muncul terus.

Kesimpulan

workflow Git dasar itu init/clone → add → commit → push, dan untuk ambil update pakai pull:

  • git clone → download repo yang sudah ada
  • git init + git remote add origin → mulai repo baru
  • git status → cek apa yang berubah
  • git add → masukkan ke staging
  • git commit -m "pesan" → simpan snapshot lokal
  • git push -u origin main → upload, selanjutnya cukup git push
  • git pull --rebase origin main → ambil update harian biar history rapi

habis ini pelajari apa itu .gitignore dan cara membuatnya biar file sensitif tidak bocor, dan panduan Git branching untuk pemula buat kerja bareng tim.

Baca Juga Mengenai :

Pertanyaan yang Sering Diajukan

Apa urutan git add, commit, push yang benar?

git add untuk pilih file ke staging, git commit untuk simpan snapshot lokal, git push untuk upload ke GitHub. urutannya add dulu baru commit baru push, kalau kebalik push tidak ada yang kekirim.

Apa beda git clone dan git init?

git clone untuk download repo yang sudah ada di GitHub, langsung dapat history. git init untuk bikin repo baru dari folder lokal yang belum di-git.

Kenapa git push minta password tapi gagal?

sejak 2021 GitHub tidak terima password biasa untuk HTTPS, harus pakai Personal Access Token (PAT) atau SSH key. buat PAT di GitHub Settings lalu pakai sebagai password, atau pakai gh auth login.

Apa itu git push -u origin main?

opsi -u itu set upstream, jadi branch lokal main dihubungkan ke origin main. setelah sekali pakai -u, selanjutnya cukup git push tanpa tulis origin main.

Bagaimana cara upload project baru ke GitHub?

buat repo kosong di GitHub tanpa centang README, lalu di lokal jalankan git init, git add ., git commit -m "Initial commit", git branch -M main, git remote add origin URL, git push -u origin main.

Apa beda main dan master?

keduanya nama branch default. GitHub sekarang pakai main sebagai default, master adalah nama lama. di 2026 biasakan pakai main, dan atur dengan git config --global init.defaultBranch main.

Bagaimana ambil update terbaru dari GitHub?

pakai git pull origin main sebelum mulai coding. kalau mau riwayat lebih rapi, pakai git pull --rebase origin main biar tidak ada commit merge yang tidak perlu.

Sigit Nurhanafi avatar
Full-stack developer & technical writer. Berpengalaman di PHP, Laravel, NodeJS, MySQL, dan Python. Aktif menulis tutorial pemrograman dan maintaining open-source projects di PemburuKode sejak 2021.