Error Git | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: Error Git

Friday, January 24, 2025

Error Git

      

Mengatasi Error Git: Your Branch and 'origin/master' Have Diverged

Ketika bekerja dengan Git, Anda mungkin menghadapi error berikut saat mencoba melakukan push project:



On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 3 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

Pesan ini menunjukkan bahwa branch lokal (master) Anda memiliki 1 commit yang belum di-push ke remote, sedangkan branch remote (origin/master) memiliki 3 commit yang belum ditarik ke lokal. Berikut adalah langkah-langkah untuk mengatasi masalah ini berdasarkan pengalaman saya.


Kronologi Error

Saat mencoba menjalankan perintah:

git push -u origin master

Git memberikan error di atas. Langkah-langkah yang saya lakukan untuk mengatasi masalah ini adalah sebagai berikut:

Langkah 1: Menjalankan git pull

Saya mencoba menarik perubahan dari branch remote dengan perintah berikut:

git pull origin master

Namun, perintah ini menghasilkan pesan tambahan:

hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint: 
  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

fatal: Need to specify how to reconcile divergent branches.



Langkah-Langkah Penyelesaian

Langkah 2: Mengecek Perbedaan Commit

Untuk memahami perbedaan antara branch lokal dan remote, saya menjalankan perintah berikut:

  1. Melihat commit yang ada di remote tetapi tidak di lokal:

    git log --oneline master..origin/master
    

    Perintah ini menunjukkan commit yang ada di remote (origin/master) tetapi belum ditarik ke lokal (master).

  2. Melihat commit yang ada di lokal tetapi tidak di remote:

    git log --oneline origin/master..master
    

    Perintah ini menunjukkan commit yang ada di lokal (master) tetapi belum di-push ke remote (origin/master).

Langkah 3: Menarik Perubahan dengan Strategi Merge

Setelah memahami perbedaannya, saya memilih strategi merge untuk menarik perubahan dari remote tanpa melakukan rebase. Perintah yang dijalankan:

git pull --no-rebase origin master

Langkah ini berhasil menyelaraskan branch lokal dan remote tanpa mengubah sejarah commit lokal.

Langkah 4: Melakukan Push Perubahan ke Remote

Setelah menyelaraskan branch lokal dengan remote, saya melakukan push ke remote dengan perintah:

git push -u origin master



Penjelasan Strategi yang Digunakan

  • --no-rebase: Strategi ini memastikan bahwa perubahan dari remote digabungkan ke lokal melalui merge, menjaga commit asli tetap utuh.
  • -u (set upstream): Perintah ini mengatur remote branch (origin/master) sebagai branch upstream untuk branch lokal (master).

Kesimpulan

Error "Your branch and 'origin/master' have diverged" terjadi karena branch lokal dan remote memiliki sejarah commit yang berbeda. Dengan langkah-langkah di atas, Anda dapat:

  1. Memahami perbedaan antara branch lokal dan remote.
  2. Menyelaraskan perubahan dengan strategi yang sesuai (merge, rebase, atau lainnya).
  3. Melakukan push tanpa konflik.

Jika Anda sering menghadapi masalah seperti ini, Anda dapat menetapkan strategi penggabungan default untuk repository Git Anda. Misalnya, untuk menggunakan merge secara default:

git config --global pull.rebase false

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux