Git si rifiuta di unire le storie non correlate su rebase

Durante l’ git rebase origin/development viene mostrato il seguente messaggio di errore da git:

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

La mia versione git è 2.9.0. Utilizzato per funzionare bene nella versione precedente.

Come posso continuare questo rebase permettendo storie indipendenti con la bandiera forzata introdotta nella nuova versione?

Il comportamento predefinito è cambiato da git 2.9:

“git merge” utilizzato per consentire l’unione di due rami che non hanno una base comune per impostazione predefinita, che ha portato a una nuova storia di un progetto esistente creato e quindi ottenuto da un manutentore ignaro, che ha consentito l’integrazione di una storia parallela non necessaria nel progetto esistente . Il comando è stato insegnato a non consentire questo di default , con --allow-unrelated-histories escape hatch --allow-unrelated-histories da utilizzare in un evento raro che fonde storie di due progetti che hanno iniziato la loro vita in modo indipendente.

Vedi il log delle modifiche del rilascio di git per maggiori informazioni.

È ansible utilizzare --allow-unrelated-histories per forzare l’unione a verificarsi.

Nel mio caso, l’errore è stato fatal: refusing to merge unrelated histories su ogni particolare prima richiesta di pull dopo aver aggiunto a distanza un repository git.

L’uso del --allow-unrelated-histories funzionato con la richiesta pull in questo modo:

git pull origin branchname --allow-unrelated-histories

Prova il seguente comando

git pull origin master --allow-unrelated-histories

Questo dovrebbe risolvere il tuo problema.

Ho ricevuto questo errore quando ho impostato per primo un repository locale. Poi è andato su github e ha creato un nuovo repository. Allora ho corso

 git remote add origin  

Quando ho provato a spingere / tirare, ho ottenuto lo stesso errore fatal: unrelated_histories . Ecco come l’ho risolto:

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

Prova git pull --rebase development

Poiché tutte le altre risposte non rispondono effettivamente alla domanda, ecco una soluzione ispirata a questa risposta su una domanda correlata.

Quindi ottieni il tuo errore facendo git rebase:

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

Questo errore in realtà non cancella il rebase, ma ora sei nel mezzo:

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

Quindi ora puoi fare l’unione a mano. Scopri i commit principali del commit unione originale:

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

Scopri quale dei due unisci genitori è quello che è stato fuso in quello corrente (probabilmente il secondo, verifica con git log 222222222 ), e quindi git log 222222222 l’unione a mano, copiando il messaggio di commit del commit unione originale:

 $ 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. 

Ho lottato anche con questo, ma sono riuscito a trovare una soluzione alternativa.

Quando si incontra l’errore sopra, basta selezionare il commit di unione e quindi continuare il rebase:

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