Na semana passada, criei um repositório Github e esqueci de selecionar uma licença para o repositório. Agora já existem 3 grandes commits.
Eu perguntei aos 3 contribuidores se está tudo bem, se eu deletar o repo e então criá-lo novamente com o mesmo nome e desta vez selecionando a licença ao criar o repo, e eles estavam bem o que isso.
Questão
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?
Respostas:
Sim, adicionando um controle remoto e escolhendo os commits no topo de seu primeiro commit.
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.
Em seguida, faça um rebase interativo no branch master para REARRANGE os commits.
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:
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.
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.
É isso aí. Todos devem estar em sincronia agora.
fonte
Tive um problema semelhante em que esqueci de fazer um fork de um repositório para meu github e adicionei vários commits antes de perceber meu erro.
Eu encontrei uma solução bem simples.
Primeiro remova o controle remoto para o repositório original
git remote remove origin
Em segundo lugar, adicione um controle remoto ao novo fork no meu github
git remote add origin <my repo URL>
Então eu empurrei para o master de origem e todos os meus commits apareceram no meu github.
fonte
git push --set-upstream origin master
, mas Git deixa você ciente disso.SourceGit = UrlS
Agora, o destino terá os mesmos dados da fonte (você também pode usar origem em vez de origin2)
fonte