Como eu adiciono um commit pai antes de todos os outros commits no Git?

1

Estou em uma situação em que estou tentando converter um projeto de código aberto para o Git e recentemente obtive acesso a dados históricos para o projeto. Eu já fiz modificações no repositório, então, eu quero adicionar essas mudanças iniciais conforme o git se compromete com o início da árvore de commits no Git. (Sim, estou ciente de que isso alterará os SHAs para confirmações posteriores; isso é aceitável.) Os dados são fornecidos como instantâneos sucessivos do diretório de trabalho. Eu quero configurá-lo para que o estado do diretório de trabalho para as confirmações posteriores não seja afetado (não quero mesclar as alterações).

Por exemplo, se a consolidação inicial B adicionar os arquivos a e b ao diretório de trabalho e meu histórico commit A incluir o arquivo a , quero fazer uma nova confirmação B' parented de A que adiciona o arquivo b apenas. Em B e B' , o diretório de trabalho tem a mesma aparência, e qualquer confirmação subsequente em cima de B pode ser rebaixada com segurança em B' .

É possível fazer isso no Git? Se sim, como?

Editar: observe que preciso modificar o commit inicial. O uso padrão de git commit acrescenta um novo commit como filho do HEAD commit e, portanto, não funciona para o commit inicial, que não tem pai.

    
por Mario Carneiro 03.08.2013 / 04:23

2 respostas

5

Algo como isso deve funcionar.

# Create a new branch with the old history
$ git checkout --orphan old-history    
$ git add <old-files>
$ git commit

# Rebase master on top of the branch with old-history
$ git checkout master
$ git pull --rebase . old-history
    
por 03.08.2013 / 07:56
0

Não tenho certeza se é possível fazer apenas:

git add [files]
git commit -m 'first commit'

Em seguida, mescle as alterações

git add [files]
git commit -m 'second commit'

Então

git push

Se isso não funcionar, então acho que não há como conseguir isso.

    
por 03.08.2013 / 05:22

Tags