Частичные файлы этапа с Visual Studio

Есть ли способ просто скомпилировать фрагменты кода в файле, а не весь файл?

Просто интересно, возможно ли это.

Использование Visual Studio 2015, TFS 2015 (Git).

Ответ 1

Нет, ни Visual Studio 2015, ни 2017 не поддерживают этапы подготовки (неполные файлы). Вам нужно будет использовать другой клиент для внесения этих частичных изменений.

Постановка фрагментов - это клиентская функция, любой клиент, который ее поддерживает, может использоваться для создания фрагмента. Подойдет командная строка или сторонний клиент, такой как Tower или SourceTree. После постановки фиксация поэтапных изменений может быть выполнена с помощью Visual Studio или любого другого клиента, который может зафиксировать изменения (это будет в значительной степени каждый клиент git).

После размещения фрагмента Visual Studio отобразит файл как "Постановочный", а также как "Неустановленный". Постановочный файл содержит созданный вами кусок. Неустановленный файл содержит фрагменты, которые вы не ставили. Когда вы делаете коммит, постановочные блоки будут зафиксированы. Вы можете повторить этот цикл столько раз, сколько хотите.

Ответ 2

@tomossius попросил пример того, как частично сгенерировать файл с помощью инструментов командной строки, используя интерактивную команду git add. Там может быть более элегантный способ, но это то, как я это делаю.

Git справочная информация вручную - интерактивная стадия

Я пропустил бы простой случай.

Команда будет

git add -i stagepartialfile.cs

тогда вам будет предложено меню

           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>

Здесь вы можете выбрать 5 или p для патча.

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

Git предлагает выбрать файлы, которые вы хотите установить. В этом случае мы вводим 1, чтобы выбрать файл, который мы указали.

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

С *, указывающим, что этот файл выбран, мы можем просто нажать Enter, чтобы начать процесс исправления.

На этом этапе вам будет предложено выполнить этап каждого отдельного фрагмента.

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,?]? 

Нажимая кнопку? мы можем получить список команд

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

Здесь вы можете выбрать, какие фрагменты для сцены, используя y или n или s, чтобы разделить на более мелкие куски.

После этого вы увидите файл в Visual Studio в поэтапной области и в неустановленной области. Изменения, которые вы поставили, будут в этом файле, а те, которые вы сказали "нет", будут находиться в неустановленной области.

Ответ 3

У GitTools нет лучшего Gui, но лучше, чем ничего. В расширенном режиме (флажок над списком файлов) вы можете ставить или сбрасывать выбранные строки. https://marketplace.visualstudio.com/items?itemName=yysun.GitTools

Ответ 4

Можно использовать исходное дерево для частичного размещения в файлах. Все изменения будут отражены в дереве исходных текстов, если вы фиксируете их из Visual Studio с помощью Team Explorer.