Selama git rebase origin/development
pesan kesalahan berikut ditunjukkan dari Git:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Versi Git saya adalah 2.9.0. Dulu bekerja dengan baik di versi sebelumnya.
Bagaimana saya bisa melanjutkan rebase ini memungkinkan sejarah yang tidak berhubungan dengan bendera paksa yang diperkenalkan dalam rilis baru?
git-rebase
situasi sementara jawabannya memberi bendera untukgit-merge
git pull [repo URL]
bukannyagit clone [repo URL]
Jawaban:
Perilaku default telah berubah sejak Git 2.9:
Lihat changelog Git release untuk informasi lebih lanjut.
Anda bisa menggunakan
--allow-unrelated-histories
untuk memaksa penggabungan terjadi.sumber
--allow-unrelated-histories
secara permanen?git pull
baik juga. Apakah dalam "peristiwa langka yang menggabungkan sejarah dua proyek yang memulai hidup mereka secara mandiri".git --work-tree="." pull --allow-unrelated-histories
Dalam kasus saya, kesalahan hanya terjadi
fatal: refusing to merge unrelated histories
pada setiap percobaan, terutama permintaan tarikan pertama setelah menambahkan repositori Git dari jarak jauh.Menggunakan
--allow-unrelated-histories
bendera berfungsi dengan permintaan tarik dengan cara ini:sumber
git clone
.Coba perintah berikut:
Ini harus menyelesaikan masalah Anda.
sumber
Saya mendapatkan kesalahan ini ketika saya mengatur repositori lokal terlebih dahulu. Lalu saya pergi ke GitHub dan membuat repositori baru. Lalu aku berlari
Ketika saya mencoba mendorong atau menarik, saya mendapatkan
fatal: unrelated_histories
kesalahan yang sama setiap kali.Inilah cara saya memperbaikinya:
sumber
.git
folder, berlarigit init
dan melakukan apa yang dikatakan Adithya, kecuali untuk bagian gabungan.Untuk ini, masukkan perintah:
Sebagai contoh,
Referensi:
Masalah sejarah yang tidak terkait GitHub
sumber
Anda akan diarahkan ke jendela edit Vim:
git push --set-upstream origin <branch>
sumber
:x<Enter>
akanSaya memiliki masalah yang sama. Coba ini:
sumber
Mencoba
git pull --rebase development
sumber
git pull --rebase=preserve --allow-unrelated-histories development
newOrigin branch
alih - alihdevelopment
) menambahkan komit awal ke atas cabang lokal saya, secara efektif menghapus hampir semua darinya. Saya ingin komit awal dari remote baru berada di bagian bawah.Untuk Android Studio dan IntelliJ:
Pertama, lakukan semuanya dan selesaikan konflik.
Kemudian buka terminal dari bawah IDE dan masukkan:
Sekarang Anda bisa mendorong.
sumber
PERINGATAN INI AKAN POTENSIAL MENGATASI PERLENGKAPAN REMOTE
Ini bekerja untuk saya:
sumber
Karena semua jawaban lain sebenarnya tidak menjawab pertanyaan, inilah solusi yang terinspirasi oleh jawaban ini pada pertanyaan terkait.
Jadi Anda melakukan kesalahan
git rebase
:Kesalahan ini sebenarnya tidak membatalkan rebase, tetapi Anda sekarang di tengah-tengahnya:
Jadi sekarang Anda dapat melakukan penggabungan dengan tangan. Cari tahu komitmen induk dari komit gabungan asli:
Cari tahu yang mana dari kedua orang tua yang menggabungkan adalah yang digabungkan ke yang sekarang (mungkin yang kedua, verifikasi dengan
git log 222222222
), dan kemudian lakukan penggabungan dengan tangan, menyalin pesan komit dari komit gabungan asli:sumber
Saya memiliki masalah yang sama. Masalahnya adalah remote memiliki sesuatu yang mencegah ini.
Saya pertama kali membuat repositori lokal. Saya menambahkan
LICENSE
danREADME.md
mengajukan ke lokal saya dan berkomitmen.Lalu saya ingin repositori jarak jauh jadi saya membuatnya di GitHub. Di sini saya membuat kesalahan dengan memeriksa "Inisialisasi repositori ini dengan README" , yang membuat README.md di remote juga.
Jadi sekarang ketika saya berlari
Saya mendapatkan:
Sekarang untuk mengatasi ini saya lakukan
Yang mengakibatkan kesalahan di bawah ini:
Saya mencoba:
Hasil:
Larutan:
Saya menghapus repositori jarak jauh dan membuat yang baru (saya pikir hanya menghapus file yang
README
bisa berfungsi) dan setelah itu yang di bawah ini berfungsi:sumber
git push --force ...
akan menjadi solusi yang tepat pada langkah 1 dalam kasus khusus iniIni biasanya terjadi ketika Anda mengkomit pertama kali ke repositori jarak jauh. Seperti kesalahan dengan jelas mengatakan "menolak untuk menggabungkan sejarah yang tidak terkait", kita perlu menggunakan flag --allow-unrelated-histories.
Sekarang akan ada beberapa konflik yang harus kita selesaikan secara manual. Setelah itu cukup komit kode dan dorong.
sumber
--allow-unrelated-histories
bendera.Dua kemungkinan kapan ini bisa terjadi -
Anda telah mengkloning proyek dan, entah bagaimana, direktori .git terhapus atau rusak. Hal ini membuat Git tidak mengetahui sejarah lokal Anda dan karenanya, akan menyebabkannya membuang kesalahan ini ketika Anda mencoba mendorong atau menarik dari repositori jarak jauh.
Anda telah membuat repositori baru, menambahkan beberapa commit, dan sekarang Anda mencoba menarik dari repositori jauh yang sudah memiliki beberapa commit. Git juga akan melempar kesalahan dalam kasus ini, karena tidak tahu bagaimana kedua proyek terkait.
LARUTAN
git pull origin master --allow-unrelated-histories
Ref - https://www.educative.io/edpresso/the-fatal-refusing-to-merge-unrelated-histories-git-error
sumber
Saya berjuang dengan ini juga, tetapi saya berhasil menemukan solusi.
Saat Anda mengalami kesalahan di atas, cukup ceri-pilih komit gabungan dan kemudian lanjutkan rebase:
sumber
Pertama-tama tarik perubahan jarak jauh ke lokal Anda menggunakan perintah berikut:
** branchname adalah master dalam kasus saya.
Ketika perintah tarikan selesai, konflik terjadi. Anda harus menyelesaikan konflik. Saya menggunakan Android Studio untuk menyelesaikan konflik.
Ketika konflik diselesaikan, penggabungan dilakukan!
Sekarang Anda bisa mendorong dengan aman.
sumber
Resolve Conflict
di AS. Terkadang popup / ballon kanan bawah menghilang & saya tidak dapat melakukan apa-apa. Terima kasih @oiyioSaya baru saja melakukan
sumber
Ketika melakukan
git pull
, saya mendapat pesan inifatal: refusing to merge unrelated histories
untuk modul repo di mana saya belum memperbarui salinan lokal untuk sementara waktu.Saya menjalankan perintah ini hanya untuk menyegarkan lokal dari asal. Saya hanya ingin yang terbaru dari jarak jauh dan tidak memerlukan perubahan lokal.
Ini memperbaikinya dalam kasus saya.
sumber
Baca tautan di bawah ini, Ini berfungsi untuk saya (Tanpa menggunakan
--allow-unrelated-histories
bendera)https://stackoverflow.com/a/39783462/4324288
sumber
Saya menggunakan rebase selama bertahun-tahun dan saya tidak pernah mengalami masalah seperti itu. Namun, masalah pertama Anda adalah, bahwa Anda mencoba melakukannya secara langsung pada cabang jarak jauh
development
dari repositori jarak jauh, yang disebutorigin
. Itu benar-benar salah karena rebase adalah perintah berbahaya, yang merestrukturisasi sejarah git. Karena itu, Anda harus terlebih dahulu mencoba repositori lokal Anda dan hanya mendorongnya, jika itu bekerja untuk Anda seperti yang diharapkan.Jadi, alur kerja rebase saya yang biasa terlihat seperti berikut (tetapi harap diingat, bahwa Anda tidak boleh menggunakan rebase di cabang, yang bukan hanya Anda satu-satunya komite. Untuk cabang seperti itu, gunakan hanya menggabungkan dan menyelesaikan konflik, jika berlaku):
master
; sebagai perintah satu baris):git checkout master && git pull origin master && git checkout development
git rebase master
git push -f origin development
Seperti yang sudah saya sebutkan, perlu diingat, rebase memanipulasi sejarah git, itu biasanya hal yang buruk. Namun, dimungkinkan untuk melakukan itu di cabang, di mana tidak ada orang lain yang berkomitmen. Untuk menjaga agar cabang tetap dapat dikembangkan oleh pengembang lain, gunakan strategi penggabungan lainnya seperti penggabungan itu sendiri, squash, atau cherrypick. Jadi, dengan kata lain: Rebase seharusnya tidak menjadi alat Anda dalam pengembangan terdistribusi. Ini berfungsi dengan baik untuk Anda jika Anda adalah satu-satunya yang bekerja di repositori ini.
Kami menggunakan strategi cabang fitur. Dalam hal ini, saya biasanya menggunakan rebase untuk mendapatkan "pembaruan" dari pengembang lain, yang terjadi sementara itu di cabang utama. Melakukannya, itu mengurangi ukuran komit yang terlihat dalam permintaan tarik. Oleh karena itu, lebih mudah bagi peninjau kode untuk melihat perubahan yang saya buat di cabang fitur ini.
sumber