Question Fusionner la branche de développement avec le maître


J'ai deux branches à savoir master et development dans un référentiel GitHub. Je fais tout mon développement en développement comme indiqué.

git branch development
git add *
git commit -m "My initial commit message"
git push -u origin development

Maintenant, je veux fusionner tous les changements sur le development branche dans le master. Mon approche actuelle est la suivante:

git checkout master 
git merge development
git push -u origin master 

S'il vous plaît laissez-moi savoir si la procédure que je suis est correcte.


487
2018-01-05 04:45


origine


Réponses:


J'aime généralement fusionner master dans le development d'abord pour que s'il y a des conflits, je peux résoudre dans le development branche elle-même et mon master reste propre.

(on branch development)$ git merge master
(resolve any merge conflicts if there are any)
git checkout master
git merge development (there won't be any conflicts now)

Il n’ya pas beaucoup de différence entre les deux approches, mais j’ai parfois remarqué que je ne voulais pas fusionner la branche master pourtant, après les avoir fusionnés, ou qu’il reste encore du travail à faire avant de pouvoir les fusionner, j’ai donc tendance à partir master intact jusqu'à la fin.

EDIT: à partir des commentaires

Si vous voulez garder une trace de qui a fait la fusion et quand, vous pouvez utiliser --no-ff flag en fusionnant pour le faire. Ceci est généralement utile uniquement lors de la fusion development dans le master (dernière étape), car vous devrez peut-être fusionner master dans development (première étape) plusieurs fois dans votre flux de travail, et créer un noeud de validation pour ceux-ci peut ne pas être très utile.

git merge --no-ff development

764
2018-01-05 05:08



Personnellement, mon approche est similaire à la vôtre, avec quelques branches de plus et quelques squashs de commits lorsqu'ils retournent au master.

Un de mes collègues n'aime pas tellement changer de branche et reste sur la branche du développement avec quelque chose de similaire à tout ce qui est exécuté depuis la branche de développement.

git fetch origin master

git merge master

git push origin development:master

La première ligne vérifie que tous les commits en amont qui ont été faits depuis la dernière fois ont mis à jour son référentiel local.

La seconde attire ces modifications (le cas échéant) du maître vers le développement

Le troisième pousse la branche développement (désormais entièrement fusionnée avec master) jusqu’à origine / maître.

J'ai peut-être un peu tort dans son flux de travail de base, mais c'est l'essentiel.


65
2018-01-05 06:18



Ce serait bien si vous pouviez utiliser la commande Git Flow. Il fusionne facilement développer la branche avec le maître.

Qu'est-ce que vous voulez faire est de suivre la mention instruction de flux git ici,

http://danielkummer.github.io/git-flow-cheatsheet/

pas.

  • configurer le projet git flow
  • créer des branches et engager tout pour se développer
  • lance la commande "git flow release start"
  • puis donner un message complet pour la publication
  • exécuter la commande "git flow release finish"
  • il fusionnera tout pour maîtriser et changer la branche en master.
  • lancez la commande "git push" pour valider les modifications sur le maître.

Consultez le lien ci-dessus pour plus d'informations.


14
2017-11-10 05:50



Explication du bas pour ceux qui sont venus ici sans aucune connaissance des branches.

La logique de base du développement de la branche maîtresse est la suivante: Vous travaillez uniquement sur d'autres branches et n'utilisez le maître que pour fusionner d'autres branches.

Vous commencez à créer une nouvelle branche de cette manière:

1) Cloner le référentiel nécessaire dans votre racine Web:

$ cd /var/www
$ git clone git@bitbucket.org:user_name/repository_name.git

2) Créez une nouvelle branche. Il contiendra les derniers fichiers de votre référentiel de branches maître

$ git branch new_branch

3) Changer la branche git à la nouvelle branche

$ git checkout new_branch

4) Ne codage, commet, comme d'habitude ...

$ git add .
$ git commit -m “Initial commit”
$ git push (pushes commits only to “new_branch”)

5) Lorsque le travail est terminé sur cette branche, fusionner avec la branche "maître":

$ git merge master
$ git checkout master (goes to master branch)
$ git merge development (merges files in localhost. Master shouldn’t have any  commits ahead, otherwise there will be a need for pull and merging code by hands!)
$ git push (pushes all “new_branch” commits to both branches - “master” and “new_branch”)

10
2017-08-19 12:38



Oui, c'est correct, mais cela ressemble à un workflow très basique, où vous ne faites que mettre en mémoire tampon les modifications avant qu'elles ne soient prêtes pour l'intégration. Vous devriez regarder dans workflows plus avancés que git soutient. Vous pourriez aimer le branche de sujet approche, qui vous permet de travailler sur plusieurs fonctionnalités en parallèle, ou approche de l'obtention du diplôme ce qui étend un peu votre workflow actuel.


7
2018-01-05 05:08



git pull (branche de développement en cours)

git checkout master

git pull

git fusionner le développement

git pousser le maître d'origine


4
2017-10-10 09:17



Étape 1

Créez et passez à une nouvelle branche "dev", où vos fichiers git locaux sont synchronisés avec la télécommande mais la branche "dev" n'existe pas encore.

git branch dev # create
git checkout dev # switch
# No need to git add or git commit, the current
# branch's files will be cloned to the new branch by-default.
git push --set-upstream origin dev # push the "dev" branch to the remote.

Étape 2

Apportez vos modifications à la branche "dev" (votre actuel si vous suivez l'étape 1), validez et poussez-les sur la branche "dev" distante.

git add .
git commit -S -m "my first commit to the dev branch" # remove the -S if you're not "secure", secure = when you already setup crypto private and public keys (i.e "verified" green sign in github)
git push -u origin dev # push the changes to the remote, -u origin dev is optional but good to use.

Étape 3

Fusionnez votre branche «dev» dans le «maître».

git checkout dev # switch to "dev" branch if you're not already.
git merge master # optionally, this command is being used to resolve any conflicts if you pushed any changes to your "master" but "dev" doesn't have that commit.
git checkout master # switch to "master", which is the branch you want to be merged.
git merge --no-ff dev # merge the "dev" branch into the "master" one.

2
2017-11-23 11:02