Git confuso ao mesclar uma atualização no meu subárvore
-
19-09-2019 - |
Pergunta
Nós já usou muitos submódulos nos nossos principais repositórios, mas para aumentar a capacidade de manutenção de nossos projetos começamos um ramo experimental onde substituiu-os todos com sub-árvores.
Esta boa funcionou -. Mas agora quando eu estou tentando atualizar um dos sub-árvores que erroneamente se funde a atualização em um diretório completamente errado que nem sequer é uma sub
O repositório principal, onde o ramo "sub" contém o ramo experimental, é: git: //github.com/hugowetterberg/goodold_drupal.git
O repositório de fundir na atualização de: git: //github.com/voxpelli/drupal-oembed.git
A fusão fazendo: merge git -s sub oEmbed / master
O caminho das atualizações devem ser fundidas em: sites / all / modules / oEmbed /
O caminho que eles são fundidos em: módulos / agregador / traduções /
Qualquer pessoa com uma idéia de como obter as atualizações para as subárvores ou o que o erro pode ser?
Solução
Infelizmente este é um bug (ou recurso ausente) no código "merge git -s sub". Na verdade, palpites as subárvores que você deseja mesclar. Normalmente, isso magicamente acaba por ser correto, mas se o seu sub contém uma série de mudanças (ou foi originalmente esvaziar, ou qualquer outro), então ele pode falhar espetacularmente.
A melhor maneira de trabalhar em torno dele é:
-
Mesclar os arquivos que você fez anteriormente.
-
manualmente mover todos os arquivos resultantes para onde eles deve ter ido.
-
git commit -a --amend
para corrigir o merge cometer.
integrações futuras, provavelmente, um belo trabalho, a menos que este diretório é constantemente em quantidades inacreditáveis ??de fluxo.
O experimental " git subárvore " comando tem um parâmetro --prefix
que deve deixá-lo substituir esse, mas infelizmente ele não funciona no momento (uma vez que exige trabalho em torno de recursos "merge git -s subárvore" e não houve tempo para fazê-lo).
De qualquer forma, isso deve ser uma situação rara e a solução não será necessário até mesmo para futuras fusões do mesmo projeto.
Outras dicas
git versão 1.7.9.5
git pull -s subtree <remote name> <remote branch>
(merge foi para o diretório errado)
git reset --hard HEAD^
git pull -s subtree -Xsubtree=correct/directory <remote name> <remote branch>
Note que não há nenhuma barra final no diretório
http://git.661346.n2.nabble.com/PATCH-0-8-The-return-of-Xours-Xtheirs-Xsubtree-dir-td4069081.html