Git Pull Fetch

Perintah git pull dan git fetch adalah dua perintah untuk mengambil commit terbaru dari remote repository.

Pertanyaanya:

Apa perbedaan dari kedua perintah tersebut?

…dan kapan waktu yang tepat menggunakan git pull dan git fetch?

Mari kita bahas.

Apa Perbedaan git pull dengan git fetch?

Sebelum menjawab pertanyaan “kapan waktu yang tepat menggunakan git pull dan git fetch?” kita bahas dulu perbedaanya.

Perintah git pull dan git fetch fungsinya sama. Yaitu mengambil commit terbaru dari remote repository.

Fungsi perintah git pull dan git fecth
Fungsi perintah git pull dan git fecth

Tapi ada perbedaanya:

  • Perintah git pull akan mengambil commit terbaru lalu otomatis menggabungkan (merge) dengan branch yang aktif.
  • Sedangkan git fetch akan mengambil commit saja. Perintah git fetch tidak akan langsung melakukan merge.

Cara Menggunakan git pull dan git fetch

Perintah git pull dan git fetch dapat kita gunakan seperti ini:

git pull origin master
git fetch origin master

Artinya kita akan mengambil commit dari branch master pada repository remote. origin adalah nama remote-nya.

Untuk penjelasan yang lebih detail, kita bisa membaca di dokumentasi dengan mengetik perintah git pull --help atau git fetch --help.

Dokumentasi git pull

Gampang kan?

Kapan Waktu yang Tepat Menggunakan git pull dan git fetch?

Apabila kita sudah melakukan commit di repository lokal, maka yang kita gunakan adalah git fetch.

Menggunakan Git Fetch
Menggunakan Git Fetch

Kenapa menggunakan git fetch?

Karena untuk mencegah terjadinya bentrok.

Perintah git fetch akan mengambil commit terbaru dan menyimpannya di branch origin/master.

Sedangkan apabila kita tidak pernah melakukan apa-apa di lokal repository, kita bisa menggunakan git pull.

Menggunakan Git Fetch
Menggunakan Git Fetch

Perintah git pull akan mengambil commit terbaru ke branch origin/master dan langsung menggabungkannya dengan branch master (lokal).

Studi Kasus Penggunaan git pull dan git fetch

Untuk mencoba penggunaan git pull dan git fetch kita akan menggunakan repository belajar-git yang sudah dibuat di Github.

Repositori di Github
Repositori di Github

Saat ini sudah terdapat 14 kontributor di dalam repositori tersebut. Sedangkan pada repositori lokal, saya belum melakukan apa pun.

Ini perbedaan commit repo lokal dengan remote:

Perbedaan commit di repo remote dengan lokal
Perbedaan commit di repo remote dengan lokal

Pada repository remote sudah terjadi 48 commit, sedangkan pada lokal hanya 10 saja.

Sekarang saya akan melakukan sebuah commit di repository lokal. Saya akan mengubah file README.md menjadi seperti ini:

Git diff di lokal repositori

Jadi sekarang di repositori lokal ada 11 commit.

Lalu perintah yang mana yang harus kita gunakan untuk mengambil 48 commit di Github?

Tentu saja kita akan menggunakan git fetch, karena saya sudah melakukan perubahan di repo lokal.

git fetch origin master

Hasil fetch akan disimpan dalam branch origin/master.

Perintah git fetch

Kita bisa masuk ke branch origin/master dengan perintah git checkout:

git checkout origin/master

Lalu kita bisa lihat commit apa saja yang ada di sana dengan git log:

Git log origin/master

Ada dua branch dalam log tersebut:

  1. master adalah branch master di lokal
  2. origin/master adalah branch master di remote yang sudah kita fetch.

Apabila kita sudah yakin, kita bisa menggabungkan (merge) dua branch tersebut.

Caranya:

# pindah dulu ke branch master (lokal)
git checkout master
# merge branch
git merge master origin/master
Menggabungkan branch master dengan origin/master
Menggabungkan branch master dengan origin/master

Berhasil 🎉…

Coba lihat hasilnya dengan git log:

Git log setelah di-merge

Lalu Bagaimana Penggunaan Git Pull?

Perintah git pull digunakan saat kita tidak pernah melakukan commit apapun di repo lokal.

Cara kerja git pull:

  1. Ambil semua commit dari repo remote
  2. Gabungkan branch master (lokal) dengan origin/master (remote)
  3. Selesai

Untuk mencoba git pull, saya akan mengubah file README.md dari Github.

Github diff

Artinya sekarang di repositori remote (Github) ada 1 commit baru.

Bagaimana cara mengambilnya dengan git pull?

Caranya:

Gunakan perintah ini.

git pull origin master

Maka semua commit terbaru dari branch origin/master di Github akan diambil ke lokal dan langsung digabungkan dengan branch master.

Mengunakan perintah git pull
Mengunakan perintah git pull

Mudah bukan…

Jadi, Kesimpulannya

Gunakan perintah git pull saat tidak ada commit yang pernah dilakukan di lokal. Sedangkan perintah git fetch digunakan kalau sudah ada commit yang dilakukan.

Penggunaan git fetch lebih aman, karena kita akan melakukan merge branch secara manual. Sehingga kita bisa terhindar dari bentrokan.

Perintah git pull biasanya digunakan untuk sync repo lokal dengan remote.

Jika kamu menggunakan vs Code, pada pojok kanan bawah ada ikon untuk sync repo. Ini juga mungkin saja menggunakan git pull.

Sync Repo

Silahkan baca: Cara Menggunakan Git pada Visual Studio Code