Ho due rami A e B. Quello che voglio fare è creare un nuovo commit (unione) su A con lo stato corrente di A come padre che si riferisce all'albero di file descritto da B scartando qualsiasi cosa da A. Fondamentalmente la cronologia di B dovrebbe essere schiacciata in un singolo commit.Creazione di Merge Commit che sostituiscono i nostri da Theirs
Lo stato del repository concreto è costituito da due rami indipendenti, che non hanno un antenato comune (proveniente da due repository precedentemente indipendenti), ma che descrivono lo stesso contenuto. Ora voglio trovare un "git" -way per riunirli. Una soluzione di base (senza git) sarebbe a checkout A e basta copiare il contenuto di B nell'albero di lavoro e fare un git commit
. Questo è fondamentalmente quello che ho fatto prima per propagare il contenuto del secondo repository nel primo.
di farlo con git ho provato
git checkout A
git merge --squash B
Ma unforunately ha generato unire i conflitti per tutti i file che differiscono tra A e B, ciò che non è sicuramente quello che mi aspettavo.
Fondamentalmente qualcosa come
git merge --squash -s theirs
dovrebbe fare il lavoro, ma la strategia di fusione theirs
non esiste. Leggendo il docu mostra la possibilità di utilizzare qualcosa come
git merge -X theirs
che è un'opzione per la strategia di fusione recursive
. Ma questo fa ancora una fusione di blocchi non conflittuali. Solo i blocchi in conflitto sono presi direttamente da theirs
.
Sarebbe uno di quelli 'fondono strategie --their' essere utile qui? http://stackoverflow.com/questions/4911794/git-command-for-making-one-branch-like-another/4912267#4912267 – VonC
La simulazione numero 2 dovrebbe fare il lavoro. L'ho appena usato per unire --squash'. Successivamente nella storia di B c'è un'unione da A, ma questo è OK. Se non desiderato, B può essere resettato nuovamente. –
Ok, ho aggiunto il n. 2 come risposta. – VonC