Si vous avez un support de la branche où vous corriger les bugs et à construire de nouvelles versions. Sur le master que vous avez la version suivante, où vous avez également la construction de nouvelles versions régulièrement.
Chaque fois que vous créez une nouvelle version, vous changer la version dans le fichier, s'engager sur ce nouveau fichier, créer une balise et de pousser. Maintenant fusionne de soutien à maître aura toujours des conflits dans le fichier contenant les informations de version.
Si le fichier contenant les informations de version seulement contient les informations de version, vous pouvez aller avec la réponse de fcurella. Mais si elle ne fait peut également contenir fusionnables informations (pom.xml, gradle.propriétés, MANIFESTE.MF, ...), vous devez effectuer une certaine action supplémentaire.
Prenons l'exemple suivant
C---D*---E---F* support
/
A---B---G---H*---I master
où s'engage avec des étoiles contiennent seulement les changements dus à des changements de version qui devrait être ignoré lors de la fusion.
Pour fusionner soutien en maître sans fusion-conflits dus à la version construit, vous pouvez effectuer une des opérations suivantes:
Plusieurs de fusion s'engage
git checkout master
git merge C
git merge D -s ours
git merge E
git merge F -s ours
Avec l' -s ours
argument que nous disons git pour enregistrer uniquement une fusion sans modifier l'espace de travail. Ceci est comparable à l' --record-only
option de svn.
Ci-dessus entraînera la mise en page suivante
-------------C---D*---E---F* support
/ \ \ \ \
A---B---G---H*---I---J---K----L---M master
Une fusion valider à l'aide de cherry-pick
git checkout master
git merge support -s ours --no-commit
git cherry-pick C E --no-commit
git commit -m 'merged support into master'
d'abord nous sommes au début d'une fusion, mais seulement que nous la fusion, sans modifier l'espace de travail et sans faire la fusion s'engager. Puis nous sommes cherry-picking les commits de fusion, de nouveau sans s'engager. Enfin, nous nous engageons à la fusion.
Ci-dessus entraînera la mise en page suivante
C---D*---E---F* support
/ \
A---B---G---H*---I---J master
On peut même automatiser le cherry-picking.
git checkout master
git merge support -s ours --no-commit
for id in `git log support --reverse --not HEAD --format="%H [%an] %s" |
grep -v "bump version" |
sed "s/\(\w*\)\s.*/\1/g"`
do
git cherry-pick --no-commit $id
done
git commit -m 'merged support into master'