Question

Je recherche une commande git pour m'aider avec mes branches de fonctionnalités lorsqu'elles sont prêtes à entrer dans Master.Cette commande git écraserait toutes mes modifications sur ma branche en un seul commit au-dessus du maître.Je fais ça aujourd'hui avec :

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

Où 4 est le nombre de commits à écraser.Cependant, cela m'oblige à savoir combien de commits j'ai.Je fais cela aujourd'hui en exécutant :

git log HEAD...origin/master

puis compter les commits.

J'ai l'impression qu'il devrait y avoir une meilleure façon de procéder.Ou est-ce ainsi que tout le monde fait aussi ?

Était-ce utile?

La solution

Tout ce que tu dois faire est:

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

Comme le documents pour git merge --squash dire:

Produisez l'arbre de travail et l'état de l'index comme si une véritable fusion avait eu lieu (à l'exception des informations de fusion), mais n'effectuez pas réellement de validation, ne déplacez pas le HEAD, ni n'enregistrez $GIT_DIR/MERGE_HEAD pour que la prochaine commande git commit crée une fusion. commettre.Cela vous permet de créer un seul commit au-dessus de la branche actuelle dont l'effet est le même que la fusion d'une autre branche (ou plus dans le cas d'une pieuvre).

Après cela, vous pouvez git commit vos modifications qui sont déjà mises en scène.

Autres conseils

Voici ce que je fais, rassemblé de nombreuses expériences travaillant dans des é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 vous aidera!

je pense que tu cherches git merge --squash.Il doit importer les validations de votre branche de fonctionnalités dans master et les écraser, afin que vous puissiez créer une seule validation.

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