229 votes

Puis-je partager un déjà fendu morceau avec git?

J'ai découvert récemment git patch option à la commande ajouter, et je dois dire que c'est vraiment une fonctionnalité fantastique. J'ai aussi découvert qu'un grand morceau pourrait être divisé en petits morceau en appuyant sur la touche s, ce qui ajoute à la précision de la commettre. Mais que faire si je veux encore plus de précision, si le fractionnement hunk est pas assez petit?

Prenons l'exemple de cette déjà fendu morceau:

@@ -34,12 +34,7 @@
   width: 440px;
 }

-/*#field_teacher_id {
-  display: block;
-} */
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
+#user-register form.table-form .field-type-checkbox label {
   width: 300px;
 }

Comment puis-je ajouter le CSS commentaire que l'enlèvement de la prochaine validation ? Le 's' option n'est plus disponible!

287voto

Mark Longair Points 93104

Si vous utilisez git add -p , et même après la séparation avec s, vous n'avez pas un assez petit changement, vous pouvez utiliser e pour éditer le patch directement.

Cela peut être un peu déroutant, mais si vous suivez attentivement les instructions dans la fenêtre de l'éditeur qui sera ouverte après avoir appuyé sur e puis vous serez amende. Dans le cas que vous avez cités, vous pouvez supprimer ces lignes:

-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {

... et de remplacer l' + au début de la ligne suivante avec un espace. Si vous enregistrez et quittez votre éditeur de texte, juste la suppression de la CSS commentaire sera mis en scène.

9voto

vhallac Points 6425

Si vous pouvez utiliser git gui, il permet à des changements de phase, ligne par ligne. Malheureusement, je ne sais pas comment faire à partir de la ligne de commande - ou même si c'est possible.

Une autre option que j'ai utilisé dans le passé est en train part de la variation (gardez l'éditeur ouvert), validation de l'bits je veux, d'annulation et de ré-enregistrer à partir de l'éditeur. Pas très élégant, mais fait le travail. :)


EDIT (git-gui d'utilisation):

Je ne suis pas sûr si le git-gui est le même dans les msysgit et versions de linux, j'ai seulement utilisé le msysgit. Mais en supposant que c'est la même chose, lorsque vous l'exécutez, il y a quatre volets: volet de gauche est votre répertoire de travail, des changements, en bas à gauche est votre stades de changements, en haut à droite est la diff sur le fichier sélectionné (travail dir ou mise en scène), et en bas à droite est pour la description de la commettre (je soupçonne que vous n'en aurez pas besoin). Lorsque vous cliquez sur un fichier dans le coin supérieur droit, vous verrez la diff. Si vous cliquez droit sur un diff de ligne, vous verrez un menu contextuel. Les deux options à prendre en compte sont "stade de beau mec pour s'engager" et "ligne de scène pour s'engager". Vous gardez la sélection de "ligne de scène pour s'engager" sur les lignes que vous souhaitez engager, et vous avez terminé. Vous pouvez même sélectionner plusieurs lignes et le stade si vous le souhaitez. Vous pouvez toujours cliquer sur le fichier dans la mise en scène de la boîte pour voir ce que vous êtes à bout de commettre.

Comme pour la validation, vous pouvez utiliser l'outil graphique ou la ligne de commande.

0voto

Abizern Points 52378

Une façon pour elle est de sauter le morceau ajouter que ce soit d'autre dont vous avez besoin et puis exécutez le patch ajouter une commande à nouveau. Si c'est le seul morceau, vous serez en mesure de le découper.

Si vous êtes inquiet au sujet de la commande de l'engage - git rebase -i

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X