Проверка сиротской ветви в новом рабочем дереве - PullRequest
0 голосов
/ 26 октября 2018

Я знаю, что новую сиротскую ветвь можно создать так:

git checkout --orphan <new_branch>

однако при этом используется мое текущее рабочее дерево, которое я хочу оставить совершенно нетронутым. Я попробовал:

git --work-tree=/tmp/test checkout --orphan <new_branch>

но, похоже, это также использует мое текущее рабочее дерево, а не то, которое я указал с помощью --work-tree.

Я мог бы использовать второй клон, но это не кажется оптимальным. Любой способ решить это с помощью рабочих деревьев?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Создайте дерево с оторванной головой и осиротите его:

git worktree add --detach /.../dir
cd /.../dir
git checkout --orphan branch
0 голосов
/ 26 октября 2018

Вы можете попробовать git-worktree .

git checkout --orphan <new_branch>
git commit
git worktree add /tmp/test <new_branch>

# switch to the previous branch
git checkout -
# or
git checkout <previous_branch>

cd /tmp/test
# do something to <new_branch>

Теперь /tmp/test является поддеревом. Он разделяет тот же .git с основным рабочим деревом. Если вам не нужно дополнительное рабочее дерево, вы можете просто удалить /tmp/test. Новые коммиты хранятся в основном хранилище.

Если ваш Git еще не поддерживает git-worktree, вам нужна более новая версия.

...