Selon le manuel , git dcommit
"créera une révision en SVN pour chaque commit en git". Mais existe-t-il un moyen d’éviter les révisions multiples de Subversion? C’est-à-dire que git fusionne toutes les modifications avant d’effectuer les opérations svn commit
?
Réponses
Trop de publicités? Si vous travaillez sur une branche dans git, vous pouvez git-merge --squash
, ce qui le fait dans git. Vous pouvez ensuite pousser celui qui a été écrasé sur SVN.
Bien sûr, beaucoup de petits commits sont bons, alors pourquoi voudriez-vous les écraser?
La commande git rebase -i
pouvez faire cela, et plus encore. Cette commande est extrêmement puissant, il est donc bon de se faire des amis avec elle.
La syntaxe est la suivante: git rebase -i <commit ID>
. Cela apporte votre éditeur de texte, avec des options (instructions) pour la modification de tous les commits jusqu'à (ne comprenant pas) l'ID donné.
Par exemple, pour modifier le cours des 5 s'engage, vous pouvez faire ceci:
git rebase -i HEAD~5
Ou si votre branche SVN est appelé "svn/trunk", cette syntaxe est bon aussi:
git rebase -i svn/trunk
Puis un éditeur de texte de la fenêtre pop up. Pour l'écraser de tout, de modifier le premier mot de chaque ligne après la première de "ramasser" pour "squash" (Si cela vous semble confus, il aura plus de sens quand vous le verrez). Puis enregistrez et fermez l'éditeur. Vous aurez alors une chance de modifier le message de commit pour l'écrasé de commettre.
Parmi les autres choses que vous pouvez faire avec git rebase -i
, sont réorganisation s'engage, à l'écraser s'engage dans différentes manières, et la suppression s'engage.
J'utilise cette commande constamment; c'est une killer feature de Git.
Ryan Tomayko écrit un peu sur git rebase -i
, dont il dit:
...[c'est] un peu comme git commit --amend sauté sur l'acide et à la tenue d'une tronçonneuse – complètement fou et très dangereux, mais capable d'exposer entièrement nouveaux états d'esprit. Ici, vous pouvez éditer, de courge, de réorganiser, de démêler et d'annoter existants s'engage dans une manière plus facile et plus intuitive de ce qu'elle devrait être.
J'ai une tendance à commettre des souvent dans git, mais ne veulent pas nécessairement dcommit chaque commit svn, et en écrasant tout mon travail est fait tout aussi peu de sens. J'essaie maintenant de les réorganiser et de squash quelques-uns en plus logique de commettre des unités de maintenant.