J'utilise Git depuis environ un an maintenant et je pense que c'est fantastique, mais je viens de commencer une deuxième version du projet et j'ai commencé une nouvelle branche pour celui-ci. Je me bats un peu avec la meilleure façon de gérer les choses à l'avenir.
J'ai deux branches appelées dites master10 (pour v1) et master20 (pour v2). J'ai fait des corrections de bogues dans la v1 sur la branche master10 et développé de nouvelles choses de master20. Chaque fois que je fais un correctif de bogue, je le fusionne dans la v2 en vérifiant master20 et en le faisant git merge master10
. Jusqu'ici tout va bien.
Maintenant, cependant, j'ai fait une modification dans la v1 que je ne veux pas dans la v2, mais je veux continuer à fusionner d'autres correctifs de bogues. Comment puis-je dire à Git d'ignorer ce commit particulier (ou une série de commits), mais qu'à l'avenir, je veux toujours fusionner d'autres corrections de bugs.
J'ai pensé git rebase
que c'était peut-être ce dont j'avais besoin, mais j'ai lu le document et ma tête a presque explosé.
Je pense que ce que je veux, c'est quelque chose comme une commande "git sync" qui dit à git que deux branches sont maintenant synchronisées et à l'avenir ne fusionneront les validations qu'à partir de ce point de synchronisation.
Toute aide appréciée.
la source
À mon humble avis , la chose la plus logique à faire est de tout fusionner, puis d'utiliser git revert (commit_you_dont_want) pour le supprimer .
Exemple:
Si vous avez plusieurs validations "à ignorer" ou si vous souhaitez modifier le message de retour:
Ensuite, votre histoire peut ressembler à:
Si vous avez des conflits impliquant UNIQUEMENT ces commits "à ignorer", vous pouvez utiliser:
Votre version persistera donc sur l'autre. Même sans messages d'erreur, vous pouvez toujours "annuler" ces validations indésirables, car elles peuvent avoir d'autres modifications qui ne sont pas en conflit, et vous ne les voulez toujours pas.
Si vous avez des conflits impliquant NON SEULEMENT les validations "à ignorer", vous devez les résoudre manuellement et vous devrez probablement les résoudre à nouveau lors de la restauration.
la source
Les engagements incluent l'ascendance. Vous ne pouvez pas fusionner une validation sans fusionner les validations précédentes.
Vous pouvez bien sûr les choisir. C'est un bon flux lorsque vous avez une branche en mode maintenance.
la source
Cela ressemble à un étui classique pour 'git cherry-pick' https://git-scm.com/docs/git-cherry-pick il fait exactement ce à quoi il ressemble
la source
Une sorte de publicité pour mon projet qui enveloppe essentiellement le processus décrit par @araqnid.
C'est une sorte d'aide qui introduit le flux GIT suivant:
Une citation de la page du projet:
la source
Créez une troisième branche pour les modifications que vous souhaitez dans master10 mais pas dans master20. Considérez toujours master10 comme votre "master", la branche la plus stable de toutes. La branche avec laquelle toutes les autres branches souhaitent rester synchronisées à tout moment.
la source
Plutôt que
revert
oucherry-pick
dans ce cas, vous devez obtenir git pour tenir compte des changements que vous Skipping être plus vieux que ceux que vous avez fait.Alors:
git merge ccc
git merge fff --no-commit
git merge --continue
git merge source-branch-head
Après l'étape 4, git considérera votre branche plus récente que ce commit, puisque vous l'avez déjà traitée (en choisissant de conserver VOS versions des choses).
la source