Как вы переключаетесь между ветвями в VSCode с GIT? - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь понять, как работает ветвление в VSCode и GIT. Ранее я работал с TFS, что было довольно просто - вы создаете ветку, и все это хранится в отдельной папке на вашем диске, чтобы вы могли легко работать в одной или другой ветке.

Итак, в VSCode я создал новую ветку "test" от master. В VSCode я смотрю на значок ветви внизу слева, чтобы увидеть, в какой ветви я работаю.

Значок ветвления VSCode

Там написано, что я работаю в тесте, поэтому я делаю изменения в file1, фиксирую и синхронизирую изменения. Теперь я хочу работать над веткой master, поэтому я иду внизу слева, переключаюсь на master, , но мои изменения из тестовой ветви по-прежнему отображаются в редакторе.

Если я посмотрю на жестком диске, мои изменения из тестовой ветки там, и нет отдельной папки test & master. Так как же мне снова начать работать над мастер-веткой? Я пробовал оформить заказ, синхронизироваться с основной веткой, но всегда отображаются тестовые изменения.

Типичный сценарий: я частично проработал новую функцию в ветви, мне нужно переключиться на мастер, чтобы сделать исправление, прежде чем вернуться к ветви функции. Переключение между этими ветками ускользает от меня.

1 Ответ

0 голосов
/ 03 июня 2019

TFS и Git работают по-разному, как системы контроля версий.Что касается этого вопроса, то

В TFSVC используются ветви на основе пути.Члены группы обычно создают дополнительное рабочее пространство для каждой ветви, в которой они работают.

Принимая во внимание, что в Git ветви - это просто указатели на коммит.Изменение ветки в Git означает указание на другой коммит.Если в коммитах ветви, на которую вы переключаетесь, нет структурных изменений, то ваша структура каталогов остается неизменной даже после переключения на эту ветку.

Если в вашей ветви функций есть незафиксированные изменения и вы переключаетесьна master (при условии, что git позволяет вам переключать ветви с незафиксированными изменениями), те же самые незафиксированные изменения будут видны и на вашей основной ветке.Если у незафиксированных изменений есть конфликтующие изменения с master, то git скажет вам сначала зафиксировать ваши изменения перед переключением на master.

Однако, если вы фиксируете эти изменения в ветви функций, а затем переключаетесь на master, эти изменения не будутбыть видимым в основной ветке, так как главная ветка теперь указывает на другой коммит, и в нем отсутствует последний коммит, сделанный вами в функциональной ветке.

Типичный рабочий процесс для вашего сценария -

  1. Возьмите последние у мастера
  2. Извлеките новую ветку для новой функции
  3. Работайте над своей функцией
  4. Подготовьте и зафиксируйте эти изменения
  5. Извлеките основную ветку, сделайте самое последнее [git pull]
  6. Сделайте исправление и подтвердите мастер
  7. Извлеките ветку функции
  8. Слияние / перебазирование ветви функций с мастером
  9. Продолжайте работать над вашей функцией
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...