web-dev-qa-db-fra.com

Mettre en scène des fichiers partiellement avec Visual Studio

Existe-t-il un moyen de simplement mettre en scène des morceaux de code dans un fichier au lieu du fichier entier?

Je me demande simplement si c'est possible.

Utilisation de Visual Studio 2015, TFS 2015 (Git).

24
Valter

Non, ni Visual Studio 2015 ni 2017 ne prennent en charge les segments intermédiaires (fichiers partiels). Vous devrez utiliser un autre client pour effectuer ces modifications partielles.

La mise en scène de mecs est une fonction client, tout client qui la prend en charge peut être utilisé pour mettre en scène un morceau. La ligne de commande ou un client tiers comme Tower ou SourceTree fera l'affaire. Une fois mis en scène, la validation des modifications par étapes peut être effectuée à l'aide de Visual Studio ou de tout autre client pouvant valider des modifications (ce serait à peu près tous les clients Git disponibles).

Une fois qu'un morceau est mis en scène, Visual Studio affichera le fichier en tant que "Staged" et également en tant que "Unstaged". Le fichier intermédiaire contient le morceau que vous avez créé. Le fichier non mis en scène contient les morceaux que vous n'avez pas mis en scène. Lorsque vous validez, les morceaux mis en scène seront validés. Vous pouvez répéter ce cycle autant de fois que vous le souhaitez.

19
jessehouwing

@tomossius a demandé un exemple de mise en scène partielle d'un fichier à l'aide des outils de ligne de commande à l'aide de la commande interactive git add. Il y a peut-être une façon plus élégante mais c'est comme ça que je le fais.

Référence du manuel Git - Mise en scène interactive

Je vais néanmoins parcourir un cas simple.

La commande serait

git add -i stagepartialfile.cs

alors vous êtes invité avec un menu

           staged     unstaged path
  1:    unchanged      +30/-30 stagepartialfile.cs

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now>

De là, vous choisiriez 5 ou p pour le patch.

What now> 5
           staged     unstaged path
  1:    unchanged      +30/-30 stagepartialfile.cs
Patch update>>

Git vous invite à sélectionner les fichiers dans lesquels vous souhaitez patcher. Dans ce cas, nous saisissons 1 pour sélectionner le fichier que nous avons spécifié.

Patch update>> 1
           staged     unstaged path
* 1:    unchanged      +30/-30 stagepartialfile.cs
Patch update>>

Le signe * indiquant que ce fichier est sélectionné, nous pouvons simplement appuyer sur Entrée pour démarrer le processus de correction.

À ce stade, vous serez invité à mettre en scène chaque morceau individuel.

diff --git a/stagepartialfile.cs b/stagepartialfile.cs
index ea97bc6..d55218c 100644
--- a/stagepartialfile.cs
+++ b/stagepartialfile.cs
@@ -1,4 +1,5 @@
using System;
+using System.Configuration;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net;
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? 

En appuyant sur? nous pouvons obtenir une liste des commandes

y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help

De là, vous pouvez choisir les morceaux à mettre en scène en utilisant y ou n ou s pour les diviser en petits morceaux.

Après cela, vous verrez le fichier dans Visual Studio dans la zone intermédiaire et dans la zone non intermédiaire. Les modifications que vous avez mises en place seront dans ce fichier et celles que vous avez refusées seront dans la zone non mise en scène.

13
craigdfrench

GitTools n'a pas le meilleur Gui, mais mieux que rien. En mode avancé (case à cocher au-dessus de la liste des fichiers), vous pouvez mettre en scène ou réinitialiser les lignes sélectionnées. https://marketplace.visualstudio.com/items?itemName=yysun.GitTools

6
morty

On peut utiliser l'arborescence source pour un transfert partiel dans les fichiers. Toutes les modifications seront reflétées dans l'arborescence source si vous vous engagez à partir de Visual Studio à l'aide de Team Explorer.

0
arpit rai