Como posso fazer um conjunto de commits dos filhos de outro commit no git?

1

Eu tenho um repositório que herdei, ele foi criado com o download de um código de zip do github não clonado e quase todas as alterações foram feitas antes do primeiro commit.

Eu descobri qual commit ele foi criado em (eu acho) e depois de clonar o repositório do github eu fiz uma ramificação desse commit. Eu também adicionei o repositório incompleto como um controle remoto ao repositório completo clonado do github.

Agora eu gostaria de receber os commits do repo e rebase incompletos? -los para o ramo no repo completo, de preferência, mantendo a propriedade anterior dos commits.

    
por Camden Narzt 25.11.2015 / 17:54

1 resposta

1
  1. Primeiro, temporariamente "enxerte" dois históricos juntos via .git/info/grafts . Isso adiciona pais falsos a qualquer commit. A sintaxe é:

    commit-id parent-id [parent-id...]
    

    Digamos que seu commit mais antigo seja 1234567890 , e você acha que foi com base no commit abcdefghijkl do repositório do GitHub. Com isso, seu arquivo .git/info/grafts deve se parecer com:

    1234567890 abcdefghijkl
    

    Observe que você deve usar os IDs de confirmação de 20 caracteres completos, não os IDs abreviados.

    (O mesmo também pode ser alcançado usando "objetos substituídos" e git replace --graft . O mecanismo é diferente, mas o resultado final é o mesmo.)

  2. Use git log --stat --decorate para garantir que você acertou. Você deve ver uma decoração "enxertada" ao lado de 1234567890 .

  3. Por fim, execute git filter-branch abcdefghijkl..HEAD para "assar" o enxerto e torná-lo permanente. Depois disso, o registro deve parecer idêntico, mas o marcador "(enxertado)" deve ter desaparecido. Você também pode excluir .git/info/grafts .

    Observe que isso alterará todos os IDs de confirmação até (e incluindo) o commit enxertado.

por 25.11.2015 / 18:47

Tags