Bekerja dengan Github Remote Repository

Github Remote Repository

Di materi sebelumnya kita telah belajar dasar-dasar perintah git sekaligus mengetahui repositori lokal. Nah, di materi kali ini kita akan mencoba salah satu repositori online yaitu github yang sangat populer dan paling sering digunakan dalam proyek-proyek di industri.

Github sendiri merupakan layanan penyimpanan berupa repositori online (hosting) secara remote. Dalam materi ini kita akan belajar menggunakan github, agar teman-teman bisa mengikuti materi ini, dipersilahkan untuk membuat akun github terlebih dahulu pada tautan berikut Create Github Account.

Jika sudah punya akun github, silahkan untuk melanjutkan materinya di bawah ini.

Cara Membuat Repositori Github

Setelah memiliki akun github, kita belum memiliki repositori apapun, untuk tutorial ini mari kita buat repositori beranama repositori-pertama untuk membuatnya silahkan buka github lalu `Create New Repository`, lihat gambar di bawah ini.

Create New Repository

Membuat Repositori Github Baru


Create Repository

Membuat Repositori Github


Nah, sekarang kita sudah berhasil membuat repositori dengan nama repositori-pertama

Repositori Github Pertama

Menambahkan Repositori Github ke Lokal

Setelah berhasil membuat repositori di github, pertanyaan berikutnya bagaimana cara untuk menambahkan repositori github ke lokal kita?

Menambahkan Repositori Github ke Lokal

Silahkan copy path https, dari gambar di atas yaitu bagian ini:

https://github.com/tomipediacom/repositori-pertama.git

Lalu buka terminal dan masuk ke folder tempat di mana repositori github akan disimpan. Dalam contoh ini, saya akan simpan di folder D:\computer app\blog-tomipedia>.

Kemudian lakukan perintah untuk cloning repositori github tadi dengan perintah git clone path_https.

git clone https://github.com/tomipediacom/repositori-pertama.git

Output:

Cloning into 'repositori-pertama'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

Sekarang di folder tersebut sudah ada folder baru bernama repositori-pertama sesuai dengan nama repositori github kita. Untuk memastikannya, silahkan masuk ke dalam folder terebut lalu lakukan perintah git status.

D:\computer app\blog-tomipedia\repositori-pertama>git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Sekarang, kita sudah bisa membuat perubahan di repositori tersebut dan menyimpannya ke repositori github.

Menyimpan Perubahan ke Repositori Github

Agar bisa menyimpan perubahan ke repositori github, kita perlu melakukan commit terlebih dahulu seperti pada materi-materi sebelumnya.

Misalkan, di repo tadi kita menambahkan file catatan.txt, maka jika sudah selesai di file tersebut dan ingin menyimpan perubahannya ke github, lakukan dulu runtutan git add, lalu git commit.

Setelah itu baru kita lakukan istilah push semua perubahan dari lokal agar disimpan ke repositori github dengan perintah git push.

Contoh:

$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 319 bytes | 159.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/tomipediacom/repositori-pertama.git
  e12d7c3..e852897 main -> main

Kalau sudah seperti itu, maka kita sudah berhasil menyimpan semua perubahan di lokal ke repositori github. Jika tidak percaya silahkan cek di repo github. Dalam tutorial ini, saya menambahkan file catatan.txt, ketika dilihat di repositori github tampak seperti berikut.

Menyimpan Perubahan Repositori Lokal ke Github

Mengambil Perubahan dari Repositori Github

Dalam project kolaborasi, sangat mungkin tim lain melakukan perubahan dan menyimpannya di repositori yang sama. Perubahan tersebut tentu hanya terjadi di repositori github, sedangkan di lokal kita tidak secara otomatis mendapatkan perubahan tersebut.

Bagaimana agar perubahan di repositori github bisa ditarik ke repositori lokal kita agar repo lokal kita tetap sama dengan repo github?

Caranya ada dua, yaitu dengan git fetch atau git pull.

Perbedaan Git Fetch dan Git Pull

Perintah git fetch itu hanya mengambil perubahan commit saja, tidak secara langsung menggabungkan ke repositori lokal kita.

Biasanya digunakan ketika di repo github sudah ada perubahan, di lokal kita juga sudah ada yang berubah. Sehingga perubahan di lokal tidak akan hilang.

Sedangkan perintah git pull itu akan mengambil perubahan commit dan langsung menggabungkannya ke repositori lokal kita.

Biasanya digunakan ketika di repo lokal kita belum melakukan perubahan lagi, sehingga ketika dilakukan git pull tetap aman.

Berbeda halnya jika di repo lokal sudah ada perubahan, lalu kita melakukan git pull, maka perubahan di lokal akan hilang karena dipaksa sama dengan di repo github.

Mengambil Perubahan dengan Git Pull

Untuk kasus ini, misalnya saya mengubah file catatan.txt secara langsung dari githubnya, perhatikan gambar berikut.

Mengambil Perubahan dari Repositori Github

Dalam hal ini berarti ada perubahan di repo github, tetapi repo lokal belum update dan saya belum melakukan perubahan apapun di repo lokal. Maka tinggal lakukan perintah git pull

$ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 742 bytes | 46.00 KiB/s, done.
From https://github.com/tomipediacom/repositori-pertama
  e852897..d73a657  main     -> origin/main
Updating e852897..d73a657
Fast-forward
 catatan.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Jika kita lihat catatan commit perubahannya, maka akan tampak sama dengan yang di github.

$ git log --oneline
d73a657 (HEAD -> main, origin/main, origin/HEAD) membuat commit baru dari githubnya langsung
e852897 menambahkan file catatan.txt
e12d7c3 Initial commit

Tampak sama-sama ada 3 commit dengan message commit terakhir sama-sama membuat commit baru dari githubnya langsung

Mengambil Perubahan dengan Git Fetch

Untuk kasus sekarang, misalnya di repo github sudah ada perubahan baru, di repo lokal kita juga sudah melakukan perubahan. Asumsikan di lokal sudah melakukan commit tanpa tahu kalau di github sudah berubah, jika kita cek lognya seperti berikut.

$ git log --oneline
8b83a51 (HEAD -> main) menambahkan catatan kedua
d73a657 (origin/main, origin/HEAD) membuat commit baru dari githubnya langsung
e852897 menambahkan file catatan.txt
e12d7c3 Initial commit

Tampak bahwa (HEAD -> main) dan (origin/main, origin/HEAD) tidak berada di commit yang sama, maka lakukan git fetch untuk mendapatkan commit perubahan yang sudah ada di github.

$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 762 bytes | 31.00 KiB/s, done.
From https://github.com/tomipediacom/repositori-pertama
  d73a657..856ab43  main    -> origin/main

Jika kita cek lagi lognya dari repo lokal setelah melakukan git fetch, akan tampak seperti berikut.

$ git log --oneline
8b83a51 (HEAD -> main) menambahkan catatan kedua
d73a657 membuat commit baru dari githubnya langsung
e852897 menambahkan file catatan.txt
e12d7c3 Initial commit

Sedangkan jika kita cek log repo githubnya, akan tampak seperti berikut.

$ git log origin/main --oneline
856ab43 (origin/main, origin/HEAD) membuat commit baru yang kedua dari githubnya langsung
d73a657 membuat commit baru dari githubnya langsung
e852897 menambahkan file catatan.txt
e12d7c3 Initial commit

Tampak ada perbedaan antara log di repo lokal dengan repo di github. Lalu bagaimana cara untuk menggabungkan commit di repositori github dengan repostiori lokal kita?

Jawabannya, gunakan perintah git merge branch_lokal branch_remote

$ git merge main origin/main
Auto-merging catatan.txt
CONFLICT (content): Merge conflict in catatan.txt
Automatic merge failed; fix conflicts and then commit the result.

Di kasus ini saya mengalami conflict, ketika saya buka di text editor vs code ternyata hal ini terjadi akibat di lokal, saya menambahkan perubahan di baris tiga dan di repo github pun ternyata perubahan terjadi di baris tiga. Lihat gambar berikut

Conflict Merge Git

Lalu saya memperbaiki conflict ini dengan memindahkan perubahan lokal saya ke baris 4 dan melakukan commit ulang. Setelah itu, saya melakukan merge ulang dengan perintah seperti sebelumnya.

$ git merge main origin/main
Already up to date.

Sekarang sudah tidak ada conflict lagi, saatnya menyimpan perubahan ke repositori github dengan perintah git push.

$ git push
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 663 bytes | 663.00 KiB/s, done.
Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/tomipediacom/repositori-pertama.git
  856ab43..f54fbcd main -> main

Berhasil, sekarang repositori lokal dan repositori github sudah sama lagi, untuk memastikannya silahkan cek log.

Log di lokal

$ git log --oneline
f54fbcd (HEAD -> main, origin/main, origin/HEAD) memperbaiki commit 8b83a51
8b83a51 menambahkan catatan kedua
856ab43 membuat commit baru yang kedua dari githubnya langsung
d73a657 membuat commit baru dari githubnya langsung
e852897 menambahkan file catatan.txt
e12d7c3 Initial commit

Log di remote repositori

$ git log origin/main --oneline
f54fbcd (HEAD -> main, origin/main, origin/HEAD) memperbaiki commit 8b83a51
8b83a51 menambahkan catatan kedua
856ab43 membuat commit baru yang kedua dari githubnya langsung
d73a657 membuat commit baru dari githubnya langsung
e852897 menambahkan file catatan.txt
e12d7c3 Initial commit
Tomi Nurhidayat

Data Science dan Machine Learning Enthusiast | SEO Enthusiast.

Previous Post Next Post