Domanda

So che ci sono molte domande su questo, ma non riesco a trovare la risposta che sto cercando affatto.

Ho appena unito il mio ramo del compito nel mio master, e sono pronto a spingere le mie modifiche al ramo principale remoto.Tuttavia, stanno visualizzando come due commit:

    commit 878c07412aab6a6b06b7fc8dd84c2418cc4f31d8
Merge: 9ffa590 c9f5552
Author: ***
Date:   Mon May 21 16:02:36 2012 +0100

    Merge branch 'modelUpdate4'

    Conflicts:
        ***.xcodeproj/project.pbxproj

commit c9f5552862872673317701c3dffd7fb6b6daa02c
Author: ***
Date:   Mon May 21 15:03:21 2012 +0100

    Modified model according to requests.  Repopulated seeded database.
.

Questa è la produzione del registro Git e i due commit che desidero schiacciare come uno.Tuttavia, quando faccio:

git rebase -i HEAD~2
.

In realtà viene visualizzato solo 4 precedentemente commesso (e spinto).Sto fraintendendo come i miei rami sono stati uniti?Se provo e git rebase -i questo mostra il primo commit nell'elenco dei registri Git.

Grazie!

È stato utile?

Soluzione

Dal momento che hai detto che quattro commit sono stati già spinti, immagino che il tuo grafico (git log --oneline --decorate --graph) sia simile a questo, dove hai un commit di ramificazione tra master e modelUpdate4 già spinto al remoto:

* (master, modelUpdate4, HEAD) Merge branch 'modelUpdate4'
| \
|  * (origin/modelUpdate4) Modified model according to requests. [HEAD^2]
|  |
|  * Another commit on modelUpdate4
|  |
|  * Yet another commit on modelUpdate4!
|  |
*  | (origin/master) Something that conflics with a commit in modelUpdate4 [HEAD~1]
| /
* Previous commit on master [HEAD~2]
.

HEAD~2 è il primo genitore del primo genitore, e dal momento che il tuo HEAD è un unione di modelUpdate4 in master, si riferisce a due commette la linea master. HEAD^2 è HEAD's Secondo genitore, quindi il commit prima di HEAD in basso la linea modelUpdate4. (Vedi anche: http://paulbowingy.com/blog/2011/06 / git-caret-and-tilde )

Se HEAD~2 è la tua nuova base, riceverai tutti i commit tra HEAD~2 e master in linea retta. Dovrai anche affrontare il conflitto del ramo nel commit modelUpdate4 dove succede.

* (master, HEAD) Merge branch 'modelUpdate4'
|
* Modified model according to requests.  Repopulated seeded database.
|
* Another commit on modelUpdate4
|
* Yet another commit on modelUpdate4!
|
* Something on master that conflics with modelUpdate4
|
* Previous commit on master
.

Se qualcun altro sta usando quei rami remoti o si desidera mantenere la cronologia di ramificazione, non rebase. Riscrive la storia che è già nel repo remoto, che sarà solo un mal di testa per tutti gli altri. Spingere l'unione commettere e sarai dorato.

In alternativa, potresti restasse direttamente su origin/master. origin/modelUpdate4 finirebbe nelle boonie di Git, ma dal momento che è un ramo di attività che scommetto che hai appena cancellato comunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top