Я работаю над некоторым программным обеспечением на стороне сервера, чтобы выполнить слияние. Используя git worktree
, вы можете проверить данную ветку для голого репо и слить в нее другую ветку. Это очень быстро, даже с большими репозиториями.Git - Bare repo не может иметь worktree для главной ветки - ПОЧЕМУ?
Единственное исключение, похоже, сливается с master
. Когда я git worktree add /tmp/path/to/worktree master
я получаю сообщение об ошибке:
fatal: 'master' is already checked out at '/path/to/bare/repo'
Но это явно не так, git worktree list
дает:
/path/to/bare/repo (bare)
... и, конечно же, нет работы дерево на этом пути, просто голые файлы репо, которые вы ожидаете.
UPDATE: Я связался с сопровождающими git, и они согласны с тем, что это может быть ошибка. У меня есть предварительный патч от них, чтобы проверить. Кроме того, я также смог воспроизвести желаемое поведение без патча.
На данный момент я не совсем уверен, что такое граничное условие или первопричина, и может возникнуть проблема, возникающая из git.
Из чтения документов вам, возможно, потребуется передать опцию '-b', чтобы создать ветку для ее работы. –
Hm. Но в этом репо есть существующая мастер-ветвь. Сообщение об ошибке, похоже, также подтвердит это. Возможно, это не ясно из моего описания выше, но этот подход работает отлично (без сообщений об ошибках) с другими ветвями, включая слияние * от * master до другой ветки. – mtutty