52 votes

Git rebase ma branche de fonctionnalité

Je suis à la recherche d'une commande git pour m'aider avec mes branches quand ils sont prêts à aller en Master. Cette commande git serait squash tous mes modifications sur ma branche en un seul commit sur le dessus de maître. Je le fais aujourd'hui avec:

git rebase origin/master
git rebase -i HEAD~4

Où 4 est le nombre de validations de la courge. Toutefois, cela exige de moi de savoir combien de livraisons que j'ai. Je le fais aujourd'hui en cours d'exécution:

git log HEAD...origin/master

et puis en comptant le commet.

Je me sens comme si il devrait y avoir une meilleure façon de le faire. Ou est-ce que tout le monde fait cela aussi?

88voto

eckes Points 17277

Tout ce que vous avez à faire est de (en supposant feature_branch est extrait):

git rebase master
git checkout master
git merge --squash feature_branch

Comme les docs pour git merge --squash - dire:

Produire de l'arbre de travail et état de l'index, comme si une véritable fusion qui s'est passé (sauf pour la fusion d'informations), mais ne pas réellement faire un commit ou de bouger la TÊTE, ni le montant record de GIT_DIR/MERGE_HEAD pour cause, la prochaine git commit commande pour créer une fusion de la validation. Cela vous permet de créer un seul commit sur le dessus de la branche courante, dont l'effet est le même que la fusion une autre branche (ou plus dans le cas d'une pieuvre).

14voto

rupakg Points 101

Voici ce que je fais grâce à ma longue expérience de travail au sein d'équipes plus grandes:

 # Get latest from master
git checkout master
git pull --rebase

# rebase master into your feature branch
git checkout feature/my-feature
git rebase master --preserve-merges

# merge feature into master
git checkout master

# DO ONLY ONE of the 2 options below
# if you only have one or (maybe) 2 commits in your feature branch
git merge feature/my-feature

# OR
# this forces an empty merge commit (useful if we need to roll things back)
git merge --no-ff feature/my-feature

# if you use Github, this should also close the pull request
git push origin master
 

J'espère que cela t'aides!

2voto

manojlds Points 96599

Je pense que vous recherchez git merge --squash . Il doit importer les commits de votre branche de fonctionnalité dans le maître et les écraser afin que vous puissiez créer un seul commit.

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