J'utilise Git pour suivre ma source de latex de documentation. Je veux garder la branche principale pleine de documents adaptés à la version utilisateur final, donc quand quelqu'un a besoin de quelque chose, je peux simplement passer à la branche principale, compiler et distribuer le document.
Je crée de nouvelles branches lorsqu'un manuel a besoin d'une mise à jour majeure. Mais, lorsque le manuel est approuvé, il doit être réintégré dans le maître. Lors de la fusion de branch dans master, je voudrais passer une commande à Git pour dire: "oubliez la fusion, utilisez simplement le fichier de branch pour écraser le fichier dans master. " Y a-t-il un moyen de faire cela? Plus précisément, je veux éviter d'ouvrir un outil de fusion à chaque fois. Merci d'avance.
Pour ignorer master
, lorsque vous avez branch
extrait, puis:
git merge master --strategy=ours
http://schacon.github.com/git/git-merge.html
Comme l'a fait remarquer 'Computer Linguist' ici, cela "ignorera tout de 'master', même s'il y a des changements dans de nouveaux fichiers indépendants". Donc, si vous n'êtes pas l'OP et que vous souhaitez une fusion plus sûre qui ne fait pas comme l'OP dit "oubliez la fusion", utilisez cette excellente commande sûre de 'Computer Linguist', et plus son commentaire pour qu'il obtienne des crédits.
git merge -s recursive -X theirs branch
Dans la version 1.7.1 de Git, vous pouvez utiliser "-Xtheirs" pour fusionner dans la branche elle-même.
Par exemple, si vous commencez dans votre branche master, en commençant dans master
git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git merge -Xtheirs editBranch
Une autre façon que j'ai vue de le faire sur la base de ce post est de faire une réinitialisation matérielle sur editBranch. Par exemple:
git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git reset --hard editBranch
Je pense que cette deuxième façon pourrait être le meilleur jeu, mais je n'ai pas encore eu l'occasion de jouer avec.
Je pense que vous pouvez le faire avec la stratégie de fusion "la nôtre":
git checkout branch
git merge -s ours master
Mais cela ne fait pas exactement ce que vous voulez: il remplace le contenu de la branche de travail actuellebranch
et ce que vous voulez, c'est obtenir le même contenu sur master
. Ce que vous voulez vraiment, c'est une stratégie de fusion theirs
, et pour cela je vous montre cette question similaire pour une façon de le faire. En pratique, cela revient à réinitialiser master
pour pointer sur branch
.