Как удалить рабочую ветку git, когда удален ее рабочий каталог?
Я удалил его рабочий каталог, потому что это рабочее дерево git больше не полезно, тогда я git branch -D pubsub-sketch-tree
в каталоге основного хранилища. Ошибка выдана:
error: Cannot delete branch 'pubsub-sketch-tree' checked out at '/Users/zhouhancheng/编程/github_own/sketch_worktree/pubsub-sketch_tree'
Но '/Users/zhouhancheng/编程/github_own/sketch_worktree/pubsub-sketch_tree' был удален.
3 ответа
Ты используешь git worktree
так что ответ в git worktree
документация:
Когда вы закончите со связанным рабочим деревом, вы можете просто удалить его. Административные файлы рабочего дерева в хранилище (см. "ПОДРОБНОСТИ" ниже) в конечном итоге будут удалены автоматически (см.
gc.worktreePruneExpire
в git-config (1)), или вы можете запуститьgit worktree prune
в основном или любом связанном рабочем дереве для очистки любых устаревших административных файлов.
(акцент мой). Git не позволит вам удалить ветку, если он считает, что она извлечена во вторичном рабочем дереве. Если вторичное рабочее дерево уже удалено, но Git еще не осознал этот факт, просто запустите git worktree prune
сказать Гиту пойти проверить.
Я удалил его рабочий каталог
Вам будет легче с Git 2.17+ (Q2 2018), так как git worktree
"узнал" move
' а также ' remove
подкоманды.
Смотрите коммит 7f19def (04 марта 2018 г.) Эрика Саншайна ( sunshineco
)
См. Коммит ee6763a, коммит cc73385, коммит 78d986b, коммит c64a8d2, коммит 9f792bb, коммит 9c620fc (12 февраля 2018 г.) и коммит 4ddddc1 (24 января 2018 г.) Нгуеном Тай Нгом Дуй ( pclouds
)
(Объединено Юнио С Хамано - gitster
- в комитете bd0f794, 14 марта 2018 г.)
worktree remove
: новая командаЭта команда позволяет удалить рабочее дерево. Как и "перемещение", вы не можете удалить основное рабочее дерево или дерево с субмодулями внутри.
Для удаления
$GIT_WORK_TREE
Неотслеживаемые файлы или любые поэтапные записи считаются ценными и, следовательно, по умолчанию предотвращают удаление. Проигнорированные файлы не являются драгоценными.
удаление рабочего дерева: разрешить, когда
$GIT_WORK_TREE
уже ушел
" git worktree remove
"в основном состоит из двух вещей
- удалять
$GIT_WORK_TREE
- удалять
$GIT_DIR
(который$SUPER_GIT_DIR/worktrees/something
)Если
$GIT_WORK_TREE
по какой-то причине уже нет, мы должны быть в состоянии завершить работу, удалив$GIT_DIR
,
В моем случае это произошло потому, что шла перебазировка. Я переключился на ветку, которую хотел удалить, затем прервал перебазирование и смог удалить ее.
git branch {branch-to-delete}
git rebase --abort
# or
git merge --abort
git branch main
git branch -D {branch-to-delete}