Git переключение между независимыми ветвями - PullRequest
0 голосов
/ 25 марта 2020

У меня есть два набора кода в моем хранилище. Одним из них является старая система, которую я время от времени должен поддерживать. Другая моя новая система. Я никогда не хочу объединять эти два, но я хочу иметь возможность переключаться между ними.

Ранее я перешел с новой ветки на оригинальную. Сегодня я хочу go вернуться к ветви функций, поэтому я сделал это:

git switch feature/development

Затем я пытаюсь

git pull

и вижу различные сообщения о слияниях.

Я также попытался

git pull --force 

, и там написано: «Вытащить невозможно, потому что у вас есть незагруженные файлы».

Есть ли простой способ сохранить обе ветви и переключаться между ними?

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Команда git pull является вспомогательной командой: она означает run git fetch, затем выполните вторую команду Git . Команда second может быть выбрана, но по умолчанию используется git merge.

Итак, вы попросили Git выполнить слияние. Это слияние еще не закончено . Вы должны завершить sh или остановить объединение, прежде чем сможете сделать что-либо еще.

Если вы вообще не хотели выполнять слияние, используйте git merge --abort, чтобы остановить текущее слияние и положить вещи обратно, как они были до того, как вы начали слияние. Если вы хотите слияние, вы должны завершить sh операцию слияния для Git, которая не смогла сделать это самостоятельно, а затем использовать git merge --continue, чтобы сообщить Git, что вы поставили правильный результат слияния на место, и Git должен сохранить это как правильный результат для будущих слияний.

Кроме того, это BizTalk, поэтому некоторые файлы действительно не могут быть объединены.

Тем не менее, если вы хотите использовать git merge - что подойдет git pull - вы должны объединить их, создав правильный результат и сообщив Git, что вы это сделали. (Другой вариант - вообще не сливаться.)

Есть ли простой способ сохранить обе ветви и переключаться между ними?

Нет, если вы используете git pull, потому что это означает выборку, а затем объединение . Когда вы сталкиваетесь с конфликтом слияния, вы должны исправить его (или прекратить слияние, как показано выше), прежде чем сможете переключиться. 1

Если вы просто хотите иметь два отдельных рабочих дерева, в которых вы работаете над двумя отдельными ветвями, рассмотрите:

  • , используя git worktree, если ваш Git не менее 2,15 (git worktree был новым в Git 2,5, но есть особенно плохая ошибка, которая не исправлена ​​до версии 2.15) или
  • с использованием двух отдельных Git репозиториев.

с двумя отдельными рабочими деревьями - будь то при поддержке двух отдельных репозиториев, или один общий - вы можете оставить конфликты слияния на месте так долго, как вам нравится, и по-прежнему выполнять работу в другом рабочем дереве.


1 Есть некоторые незначительные исключения из этого правила, но они не применяются в вашем случае - если бы они применялись, ваш переключатель работал бы.

0 голосов
/ 25 марта 2020

Вы можете использовать git sta sh.

Например, у вас есть две ветви: oldVersion и newVersion. На самом деле вы работаете на oldVersion. Как только вы захотите go в newVersion, вы можете зафиксировать или остановить sh, если задание не выполнено.

На самом деле нет ожидающих изменений, поэтому вы можете легко оформить заказ в другом филиале. Когда вы вернетесь к oldVersion, вы сможете получить свою работу из sta sh с git pop.

Надеюсь, у меня есть ответ на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...