1000 votes

Transférer les changements de master à la branche dans Git

Dans mon dépôt, j'ai une branche appelée aq sur lequel je travaille.

J'ai ensuite engagé de nouveaux travaux et des bugs dans master .

Quelle est la meilleure façon d'obtenir ces commits dans la base de données de l'entreprise ? aq branche ? Créer une autre nouvelle branche à partir de master et le fusionner avec aq ?

3 votes

À l'avenir, vous pourriez également démarrer votre branche de correction de bogues à partir d'un ancêtre commun de master et des autres branches qui auront besoin des corrections, de sorte que vous puissiez la fusionner dans toutes ces branches, sans rien reprendre d'autre.

13 votes

@Jefromi mais c'est hors de son contrôle s'il n'est pas la seule personne à travailler sur le projet. d'autres personnes mettent à jour le master. bon sang, vous pouvez vous-même mettre à jour le master à partir d'une troisième branche, et la situation serait inévitable, et nécessiterait une solution générale.

0 votes

@ahnbizcad Je suis presque sûr qu'il a le contrôle de l'endroit où il crée sa propre branche. Si sa branche est un ancêtre commun de celles dans lesquelles il voudra fusionner, et que les gens ajoutent ensuite à ces branches, ce sera toujours un ancêtre commun.

1121voto

Douglas F Shearer Points 10422

Consultez le aq et rebase à partir de master .

git checkout aq
git rebase master

2 votes

La rebase peut-elle provenir d'une autre branche ? Par exemple, git rebase otherbranch ? Il semble que je me sois un peu trompé dans ma question, j'ai fait une branche à partir d'une autre branche puis j'ai apporté des modifications à la branche d'origine.

4 votes

Si j'ai raison, rebase sur la demande de pull, cela montrera tous les commits master. Si vous utilisez merge/origin master, tous les commits master seront montrés comme 1 commit, ce qui rend plus facile la révision du code.

5 votes

Parfois, git merge serait mieux. Si les deux branches ont évolué au fil du temps, vous devriez réfléchir à celle qui est la meilleure pour vous.

434voto

Chris Kooken Points 10658

Vous devriez pouvoir git merge origin/master quand vous êtes sur votre branche aq.

git checkout aq
git merge origin/master

3 votes

La fusion n'est pas la solution idéale lorsque vous souhaitez intégrer les modifications d'une branche mère. Voir ce qui suit pour savoir pourquoi rebase est mieux : stackoverflow.com/questions/457927/

64 votes

Si rebase est "meilleur" dépend complètement de la situation spécifique.

1 votes

Origin master peut avoir des commits autres que les commits de correction de bogues.

134voto

Hrishikesh Mishra Points 111

Premier contrôle au maître :

git checkout master

Faites tous les changements, hotfix et commits et poussez votre master.

Retournez à votre branche, 'aq', et fusionnez master dans celle-ci :

git checkout aq
git merge master

Votre branche sera à jour avec master. Un bon exemple de base de fusion est 3.2 Branches Git - Branches et fusions de base .

37voto

Adam Dymitruk Points 34999

Il n'y a aucune garantie que les corrections de bogues du master ne se trouvent pas parmi d'autres commits, donc vous ne pouvez pas simplement fusionner. Faites

git checkout aq
git cherry-pick commit1
git cherry-pick commit2
git cherry-pick commit3
...

en supposant que ces commits représentent les corrections de bogues.

À partir de maintenant, gardez les corrections de bogues dans une branche séparée. Vous pourrez simplement

git merge hotfixes

lorsque vous voulez les intégrer dans la branche de développement régulière.

18voto

Alan Haggai Alavi Points 34260

Soit cherry-pick les commits pertinents dans la branche aq ou fusionner la branche master dans la branche aq .

6 votes

@Slee vous avez répondu vous-même... ce n'est pas la solution pour cette situation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X