Domanda
Premesso che ho un impegno simile al seguente:Come linearizzare banalmente la mia cronologia git?
A - B - C - D - G - H
\ /
- E - F -
Come faccio ad avere una storia perfettamente lineare seguendo solo i primi genitori?
Ad esempio, voglio ottenere:
A - B - C - D - G'- H'
Si prevede che le SHA1 di di G e H cambieranno, come osservato in precedenza. (Per ovvie ragioni). Se cambiano anche gli sha1 per A, B, C e D, allora voglio sapere perché.
Sfondo
L'intento è quello di evitare il potenziale fusione impegna che deriverebbero quando si fa un git rebase -i ingenuo.
Il punto vero è quello di ottenere spera ulteriori indizi per determinare che impegna trovano in un ramo particolare, ad esempio, se abbiamo il seguente grafico:
I - J - K - L - M
\ ///
- N - O - P -
Dove N è stata incorporata in K, ma O è stato fuso con --strategy = ours in L, e P è stato fuso in M.
Desidero essere in grado di linearizzare la mia cronologia in modo che tali commit problematici possano essere identificati e controllati. Voglio avere un albero in cui posso identificare che O non è stato inserito nel ramo upstream, anche se potenzialmente identifico N e P come potenzialmente mancanti dal ramo upstream, usando git cherry, tuttavia qualsiasi suggerimento qui sarebbe apprezzato .
Per riformulare il problema, si desidera modificare ogni commit di unione per conservare solo il suo primo genitore, dimenticando il ramo che è stato unito (mantenendo le differenze ovviamente) – CharlesB
@CharlesB: Sì, è vero! – Arafangion