Question

Je sais qu'il y a beaucoup de questions sur SO à ce sujet, mais je n'arrive pas du tout à trouver la réponse que je cherche.

Je viens de fusionner ma branche de tâches dans mon maître et je suis prêt à appliquer mes modifications à la branche principale distante.Cependant, ils s'affichent sous la forme de deux commits :

    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.

Ceci est la sortie de git log et les deux commits que je souhaite écraser en un seul.Par contre, quand je fais :

git rebase -i HEAD~2

En fait, il affiche simplement 4 commits précédemment validés (et poussés).Est-ce que je ne comprends pas comment mes succursales sont fusionnées ?Si j'essaie git rebase -i Cela affiche simplement le premier commit dans la liste des journaux git.

Merci!

Était-ce utile?

La solution

Puisque vous avez dit que quatre commits avaient déjà été poussés, je suppose que votre graphique (git log --oneline --decorate --graph) ressemble à ceci, où vous avez des commits de branchement entre master et modelUpdate4 déjà poussé vers le dépôt distant :

* (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 est le premier parent du premier parent, et puisque votre HEAD est une fusion de modelUpdate4 dans master, il fait référence à deux commits sur le master doubler. HEAD^2 est HEAD's deuxième parent, donc le commit avant HEAD en bas du modelUpdate4 doubler.(Voir également: http://paulboxley.com/blog/2011/06/git-caret-and-tilde)

Si HEAD~2 est votre nouvelle base, vous obtiendrez tous les commits entre HEAD~2 et master en ligne droite.Vous devrez également gérer le conflit de branche dans le modelUpdate4 engagez-vous là où cela se produit.

* (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

Si quelqu'un d'autre utilise ces branches distantes ou si vous souhaitez conserver votre historique de branchement, ne rebasez pas.Cela réécrira l'historique qui se trouve déjà dans le dépôt distant, ce qui ne sera qu'un casse-tête pour tout le monde.Poussez le commit de fusion et vous serez en or.

Alternativement, vous pouvez rebaser directement sur origin/master. origin/modelUpdate4 finirait dans les boonies de git, mais comme il s'agit d'une branche de tâches, je parie que vous alliez la supprimer de toute façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top