git merge Déjà à jour lorsqu'il n'est pas
Tout en travaillant sur un projet à l'aide de git et bitbucket.com il y a les branches suivantes:
master
development
uat
production
Quand j'ai commencé le travail sur le projet, j'ai pris un git clone de développement (en pensant naturellement qu'il contenait à l'état de l'art de code). Des mois de travail plus tard, et maintenant il s'avère que le code dans la branche de la production (qui est actuellement en cours d'exécution dans la production) a une version plus récente que le code que j'ai commencé avec la direction du développement.
Lorsque je tente de l':
git checkout development
git merge production
il dit "Déjà à jour". Quand je vais:
git diff production..development
il crache beaucoup de changements que dire de la production de la branche a du code qui n'est pas dans la branche de développement. Comment puis-je faire le code de production fusionner avec le développement de code sans l'essuyer mon mois de travail?
Cela pourrait également se produire si vous
fetch
mais oublie de pull
la direction générale, vous êtes en essayant de fusionner dans votre branche.OriginalL'auteur Warwick Hall | 2014-03-11
Vous devez vous connecter pour publier un commentaire.
Vous ne voulez pas
merge
, mais plutôt àrebase
. Qui est, de prendre les commits que vous avez fait, les commits vous ajoutée de la branchedevelopment
—à-dire ceux qui n'étaient pas là quand vous avez fait votreclone
, mais qui sont là maintenant et voir ce que les changements que chacun fait dans l'ordre; et d'appliquer ces modifications, de nouveau dans l'ordre, sur le haut de la brancheproduction
.(Certains d'entre eux ne sera probablement pas aller à proprement: les modifications à la
production
qui ne sont pas présents dansdevelopment
signifie que certains, peut-être beaucoup, des modifications apportées doivent être modifiés pour s'adapter. Pire, le changement de l'un de vos modifications seront presque certainement affecter plus de vos modifications, de sorte que cette rebase pourrait être difficile.)Qui a dit... "Up to date" ne signifie pas que le code est le même, par tous les moyens. Il signifie simplement que la commettre graphique montre qu'il n'y a rien de nouveau à apporter. Qui, à son tour, implique que vous (ou quelqu'un d'autre) a déjà fait de la fusion. Le arbre attaché à la finale de la fusion (le résultat de la fusion) n'est pas ce que vous voulez, mais la seule chose git pouvez le voir, c'est que la fusion est réalisée. Voir Pourquoi, après fusion ne GIT dire “Déjà à jour”, mais les différences entre les branches existent-ils encore? pour un exemple impliquant
git revert
, par exemple.rebase
dit la même chose .. en face de bureauOriginalL'auteur torek