Incorporar um subrepositório em outro repositório Git

Procurando uma maneira de reimportar modificações feitas em um repositório (cujo diretório raiz foi modificado usando git filter-branch para remover pastas de nível superior desnecessárias) para seu ancestral, felizmente caí no subdiretório git .

Aqui está um trecho do README.md para dar uma ideia do que é:

Em comparação com outras abordagens (git-submodule, git-subtree) , git-subdir:

  • Incorpora o conteúdo real, não apenas uma referência (como git-subtree e diferente de git-submodule).
  • Não armazena metadados e não há requisitos para que os commits importados permaneçam intactos. Rebase, corrija e filtre de acordo com o seu conteúdo.
  • Não tenta mapear os commits nos repositórios. Ele se concentra nos commits que precisam ser importados ou exportados no momento, e não se preocupa com os commits históricos.
  • Na verdade, não existe nenhum estado persistente (exceto algumas opções de linha de comando salvas automaticamente como padrão para mais tarde).
  • Ficará feliz em obter os resultados de git-subtree, subtree merge ou qualquer outra forma de sincronizar pastas. Na verdade, mesmo se você copiou a subpasta via drag’n’drop ou cp -r, você ainda pode usar git-subdir para sincronizar as alterações.
  • Sincroniza de ambas as maneiras: você pode fazer commit no repositório embutido e então importar os commits para o master, ou você pode fazer commit no repositório master e então exportar os commits para o embutido. Na verdade, você pode alternar entre as duas abordagens.

Para simplificar, a ideia de git-subdir é que, conceitualmente, queremos uma abordagem semelhante à seleção seletiva em vez da semântica estrita de mesclagem / rebase normal.

Eu testei duas vezes por agora e parece funcionar perfeitamente.

Espero que isso possa inspirar alguém.

Eric