Pertanyaan Git menolak untuk menggabungkan sejarah yang tidak terkait pada rebase


Selama git rebase origin/development pesan kesalahan berikut ditampilkan dari git:

fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

Versi git saya adalah 2.9.0. Digunakan untuk bekerja dengan baik di versi sebelumnya.

Bagaimana saya bisa melanjutkan rebase ini memungkinkan sejarah yang tidak terkait dengan bendera paksa diperkenalkan dalam rilis baru?


987
2018-06-21 07:23


asal


Jawaban:


Perilaku default telah berubah sejak git 2.9:

"git merge" digunakan untuk memungkinkan penggabungan dua cabang yang tidak umum      basis secara default, yang mengarah ke riwayat baru merek yang ada      proyek dibuat dan kemudian ditarik oleh pengelola yang tidak curiga,      yang memungkinkan sejarah paralel yang tidak perlu digabung menjadi      proyek yang ada. Perintah telah diajarkan untuk tidak membiarkan hal ini terjadi      default, dengan pintu keluar --allow-unrelated-histories pilihan      untuk digunakan dalam acara langka yang menggabungkan sejarah dua proyek      yang memulai hidup mereka secara mandiri.

Lihat git rilis changelog untuk informasi lebih lanjut.

Kamu dapat memakai --allow-unrelated-histories untuk memaksa penggabungan terjadi.


1335
2018-06-21 07:26



Dalam kasus saya, kesalahan itu adil fatal: refusing to merge unrelated histories pada setiap permintaan penarikan pertama setelah jarak jauh menambahkan repo git.

Menggunakan --allow-unrelated-histories bendera berfungsi dengan permintaan tarik dengan cara ini:

git pull origin branchname --allow-unrelated-histories


547
2017-10-18 12:13



Coba perintah berikut

git pull origin master --allow-unrelated-histories

ini harus menyelesaikan masalah Anda.


292
2017-11-20 16:41



Saya mendapat kesalahan ini ketika saya mengatur repositori lokal terlebih dahulu. Lalu pergi ke github dan membuat repositori baru. Lalu aku berlari

git remote add origin <repository url>

Ketika saya mencoba mendorong / menarik, saya mendapatkan hal yang sama fatal: unrelated_histories kesalahan. Beginilah cara saya memperbaikinya:

git pull origin master --allow-unrelated-histories
git merge origin origin/master
... add and commit here...
git push origin master

160
2018-06-08 17:41



Mencoba git pull --rebase development


32
2018-01-20 14:05



Saya berjuang dengan ini juga tetapi berhasil menemukan solusi.

Ketika Anda mengalami kesalahan di atas, pilih cherry-pilih gabungan commit dan kemudian lanjutkan rebase:

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue

6
2017-08-30 15:20



Karena semua jawaban yang lain tidak benar-benar menjawab pertanyaan, inilah solusi yang diilhami oleh jawaban ini pada pertanyaan terkait.

Jadi Anda mendapatkan kesalahan Anda melakukan git rebase:

$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

Kesalahan ini sebenarnya tidak membatalkan rebase, tetapi Anda sekarang berada di tengahnya:

$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
   pick 1234deadbeef1234deadbeef test merge commit

Jadi sekarang Anda bisa melakukan penggabungan dengan tangan. Cari tahu komitmen induk dari commit gabungan asli:

$ git log -1 1234deadbeef1234deadbeef
commit 1234deadbeef1234deadbeef
Merge: 111111111 222222222
Author: Hans Dampf
Date:   Wed Jun 6 18:04:35 2018 +0200

    test merge commit

Cari tahu yang mana dari kedua orang tua yang bergabung itu adalah orang yang digabungkan ke yang sekarang (mungkin yang kedua, verifikasi dengan git log 222222222), dan kemudian lakukan penggabungan dengan tangan, menyalin pesan commit dari commit gabungan asli:

$ git merge --allow-unrelated 222222222 --no-commit
Automatic merge went well; stopped before committing as requested
$ git commit -C 1234deadbeef1234deadbeef
[detached HEAD 909af09ec] test merge commit
 Date: Wed Jun 6 18:04:35 2018 +0200
$ git rebase --continue
Successfully rebased and updated refs/heads/test-branch.

4
2018-06-22 09:04