Diciamo che ho un ramo chiamato master
e un ramo chiamato upstream_lib
.Come forzare un antenato comune in una git merge?
Il ramo master
ha una sottodirectory lib
basata sul codice presente sul ramo upstream_lib
; le modifiche in upstream_lib
vengono unite (con la strategia della sottostruttura) al ramo master
periodicamente. La directory lib
in master
ha alcune sue modifiche che non sono in upstream_lib
.
Tuttavia, diciamo che i due rami o non hanno una storia comune (perché il repository è stato appena migrato a git, per esempio) o la base di fusione non è corretto perché le fonde in upstream_lib
sono stati schiacciati, c'è stata una certa rebasing o qualunque cosa.
La domanda è: dato una nuova serie di modifiche su upstream_lib
, come forzare l'unione di considerare come l'antenato comune una revisione specifica di upstream_lib
?
Ha funzionato perfettamente, grazie! – Artefacto
Immagino che l'unico problema è che non ci sono cronologia condivisa o commit con il ramo upstream_lib, ma posso conviverci. – Artefacto
Felice di sentirlo! Se si volesse forzare la discendenza condivisa, è possibile creare un commit vuoto iniziale e rebase sia su 'master' che su upstream_lib'. Supponendo ovviamente che 'upstream_lib' è il tuo ramo piuttosto che un telecomando. Tuttavia, se l'importazione iniziale di 'upstream_lib' nella directory' lib' era solo un 'cp' piuttosto che un'unione (come descritto su http://www.kernel.org/pub/software/scm/git/docs/ howto/using-merge-subtree.html), avrai ancora i problemi che descrivi. –