Existe uma maneira de obter os commits em um novo repo (desta vez, o primeiro commit é o arquivo LICENSE) e ainda manter as meta informações do commit?
Sim, adicionando um controle remoto e escolhendo os commits no topo de seu primeiro commit.
# add the old repo as a remote repository
git remote add oldrepo https://github.com/path/to/oldrepo
# get the old repo commits
git remote update
# examine the whole tree
git log --all --oneline --graph --decorate
# copy (cherry-pick) the commits from the old repo into your new local one
git cherry-pick sha-of-commit-one
git cherry-pick sha-of-commit-two
git cherry-pick sha-of-commit-three
# check your local repo is correct
git log
# send your new tree (repo state) to github
git push origin master
# remove the now-unneeded reference to oldrepo
git remote remove oldrepo
O restante desta resposta é se você ainda deseja adicionar a LICENÇA ao seu repo anterior.
Sim. Você pode colocar seu commit de LICENÇA como o primeiro commit por rebasing.
Rebasing é uma maneira de reorganizar a ordem de commit, mantendo todos os autores e datas de commit intactos.
Ao trabalhar em um repositório compartilhado, geralmente é desencorajado, a menos que toda a sua equipe seja fluente no git. Para aqueles que não são, eles podem simplesmente clonar uma nova cópia do repositório.
Veja como você obtém seu commit de LICENÇA como o primeiro commit.
1. Atualize e rebase sua cópia local
Verifique seu projeto e coloque o arquivo LICENSE em um commit NO TOPO de sua pilha de 3 commits atuais.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Em seguida, faça um rebase interativo no branch master para REARRANGE os commits.
git rebase -i --root
Isso abrirá um editor. Mova a linha inferior (seu commit de "commit inicial", o commit mais recente) para o topo do arquivo. Em seguida, salve e feche o editor.
Assim que você sair do editor, o git escreverá os commits na ordem que você acabou de especificar.
Agora você tem sua cópia local do repositório atualizada. Faz:
git log
verificar.
2. Force o envio de seu novo estado de repo para o github
Agora que sua cópia está atualizada, você deve forçar o envio para o github.
git push -f origin master
Isso dirá ao github para mover o branch master para seu novo local. Você só deve forçar o push em raras ocasiões como esta em que todos que trabalham com ele estão cientes da mudança pendente, caso contrário, isso confundirá seus colaboradores.
3. Sincronize os colaboradores com o github
Por último, todos os colaboradores deverão sincronizar com este repositório.
Primeiro, eles devem ter repositórios limpos, pois o comando a seguir pode ser destrutivo se houver alterações não salvas.
# make sure there are no unsaved changes
git status
# pull the latest version from github
git fetch
# move their master branch pointer to the one you published to github.
git reset --hard origin/master
É isso aí. Todos devem estar em sincronia agora.