Как переключать ветки между двумя отдельными рабочими деревьями в Git? - PullRequest
1 голос
/ 02 апреля 2019

Я добавил связанное рабочее дерево для "развивающейся" ветки. Итак, мои рабочие деревья такие:

- дерево проекта "проект" -> ветка master
- дерево проектов "project_develop" -> ветка разработки

В этом состоянии я хочу проверить основную ветку на рабочем дереве "project_develop". Но, как я знаю, невозможно оформить одну и ту же ветку на отдельных рабочих деревьях. Единственный способ, которым я мог придумать, - это добавить новую временную ветку.

Буду признателен, если кто-нибудь покажет мне другой путь.
Спасибо!

Ответы [ 2 ]

3 голосов
/ 02 апреля 2019

Самый простой способ, на master рабочем дереве

git checkout --detach

Существует множество других способов;Дело в том, что, поскольку у вас нет другой ветви для извлечения этого рабочего дерева, вы хотите перевести ее в отдельное состояние HEAD.Он все еще может иметь тот же код, проверенный;он просто не может думать, что он «включен» в ветку master (поскольку могут возникнуть проблемы с обновлением рабочих деревьев при фиксации).

Как только это будет сделано, вы можете использовать одну из 2-х рабочих дерев git checkout master изатем, если хотите, можете даже вернуться к первому рабочему дереву и git checkout develop, чтобы полностью поменять ветки.Или просто подождите, пока вы не будете готовы проверить develop обратно ко 2-му рабочему дереву, а затем снова проверьте master на 1-м дереве ...

1 голос
/ 02 апреля 2019

Я думаю, что лучше создать временную ветку. Если вы не хотите создавать временную ветку, у вас есть другие варианты.

  1. Оформление определенного коммита. В вашем случае вы можете просто запустить git checkout refs/heads/master. Это приводит к отключенному состоянию головы. refs/heads/master можно заменить конкретным коммитом.

  2. Создайте столько рабочих деревьев для отдельной головы, сколько вы хотите. Вы можете запустить git worktree add /path/foo1 refs/heads/master, git worktree add /path/foo2 refs/heads/master, ..., git worktree add /path/fooN refs/heads/master.

  3. Сброс develop до master. В рабочем дереве "project_develop" запустите git reset master --hard.

Эти подходы обходят ограничение на невозможность создания второго рабочего дерева для той же ветви. 1-й и 2-й почти одинаковы с временной веткой. Третье может привести вас в замешательство через некоторое время.

...