Est-il possible de faire en sorte que git svn dcommit aboutisse à un seul svn commit?

StackOverflow https://stackoverflow.com/questions/158514

  •  03-07-2019
  •  | 
  •  

Question

Selon le manuel , git dcommit & # 8220 créera une révision en SVN pour chaque commit dans git. & # 8221; 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 la svn commit?

Était-ce utile?

La solution

Si vous travaillez sur une branche dans git, vous pouvez git-merge --squash , qui fait ça au sein de git. Vous pouvez ensuite pousser celui-ci sur un SVN.

Bien sûr, beaucoup de petits commits sont bons, alors pourquoi voudriez-vous les écraser?

Autres conseils

La commande git rebase -i peut le faire, et plus encore. Cette commande est extrêmement puissante, il est donc bon de se lier d'amitié avec elle.

La syntaxe est la suivante: git rebase -i <commit ID>. Ceci fait apparaître votre éditeur de texte, avec les options (et les instructions) pour modifier tous les commits jusqu’à (non compris) l’ID donné.

Par exemple, pour modifier les 5 commits précédents, procédez comme suit:

git rebase -i HEAD~5

Ou si votre branche SVN s'appelle " svn / trunk " ;, alors cette syntaxe est bonne aussi:

git rebase -i svn/trunk

Ensuite, une fenêtre d'éditeur de texte apparaîtra. Pour tout écraser, changez le premier mot de chaque ligne après le premier de & "Choisir &"; pour " squash " (Si cela semble déroutant, cela aura plus de sens quand vous le verrez). Puis enregistrez et fermez l'éditeur. Vous aurez ensuite la possibilité de modifier le message de validation pour la validation supprimée.

Parmi les autres choses que vous pouvez faire avec <=>, vous pouvez réorganiser les commits, les supprimer de différentes manières et les supprimer.

J'utilise cette commande constamment; c'est une fonctionnalité mortelle de Git.

Ryan Tomayko a écrit un peu à propos de git rebase -i, qu'il a dit:

  

& # 8230; [c'est] un peu comme git commit - l'amendement sautait à l'acide et tenait une scie à chaîne & # 8211; complètement fou et assez dangereux mais capable d’exposer de nouveaux états d’esprit. Ici, vous pouvez éditer, écraser, réorganiser, séparer et annoter les commits existants de manière & # 8217; plus simple et plus intuitive qu’elle ne devrait être.

J'ai tendance à m'engager souvent dans git, mais je ne veux pas nécessairement décommander tous les commets à svn, et écraser tout mon travail n'a pas plus de sens. J'essaie maintenant de réorganiser et d'écraser quelques unités ensemble en unités de validation plus logiques maintenant.

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