git merge o cherry-pick per copiare i commit dal vecchio ramo nel ramo più nuovo?

3

Il precedente aveva lavorato sul clone locale di LO (LibreOffice) per il supporto degli script TB_LR nel 2015, e ora il mio compito è quello di ottenere tutti i suoi commit sul ramo per riprodurre il suo lavoro sul clone LO attuale. Mi è stato detto di selezionare i suoi commit uno per uno, risolvere conflitti, compilare, correggere errori di compilazione e di collegamento, quindi ripetere gli stessi passaggi per i commit rimanenti.

Ho clonato LO, creato un nuovo branch, CP-ed i suoi primi 10 commit (i primi 9 CP sono finiti senza errori di compilazione uno per uno), e quel decimo commit è un grosso commit con molti file modificati, poi mi sono imbattuto nel seguente errore:

[build OCC] apple_remote/source/RemoteMainController.m
make[1]: * ** No rule to make target '/Users/almas/lode/dev/core/vcl/vcl.common.component', needed by '/Users/almas/lode/dev/core/workdir/ComponentTarget/vcl/vcl.common.component'.
Stop.
make[1]: * ** Waiting for unfinished jobs....
Makefile:276: recipe for target 'build' failed
make: * ** [build] Error 2

Ho fatto "git diff origin / master - makefiles" per Makefile, Makefile.gbuild, vcl / Makefile e apple_remote / Makefile, tutti uguali all'origine / master.

Non so come risolvere questo errore e procedere. Sono bloccato.

Inoltre, ho ancora circa 40 commit della sua filiale 2015 da incorporare nella più recente sorgente LO per il mio lavoro.

Sta facendo una copia della sua filiale 2015, facendo "git merge master", quindi risolvendo i conflitti, il modo migliore per aggiungere tutto il suo lavoro al mio nuovo clone LO?
O unire la sua filiale 2015 al mio nuovo LO clone? (git checkout master & g & git unire his_2015's_branch)

In qualsiasi modo e indipendentemente da ciò che accadrà durante queste 2 fusioni, lo stato attuale del mio ramo di lavoro non sarà influenzato, giusto?

Posso sempre tornare allo stato "No rule to make targe" del ramo corrente anche se si verificano errori di fusione o conflitti su altri 2 rami, non è vero?

Devo fare una copia della directory $ LODE_HOME / dev / core che è molto grande, nel caso in cui l'unione vada storta?

    
posta Chinbat G. 13.05.2018 - 17:02
fonte

1 risposta

4

Quanti cambiamenti sono accaduti a LibreOffice in quei 3 anni? Git non è magico, non esiste una combinazione di comandi in grado di risolvere i conflitti di unione. Devi capire il codice.

Nel caso di un vecchio ramo come questo, consiglierei semplicemente di creare un nuovo ramo e di rifare manualmente il lavoro.

Puoi fare un confronto tra codice sorgente e stato finale del vecchio ramo, presumibilmente ci sono nuovi file che puoi riutilizzare con modifiche minime.

Ma generalmente sarà più facile scrivere le funzioni da zero sulla base corrente piuttosto che cercare di capire l'evoluzione del codice in questi tre anni e come dovrebbe apparire il codice di unione su ogni commit.

    
risposta data 13.05.2018 - 17:16
fonte

Leggi altre domande sui tag