Atualmente, tenho um repositório privado no github que quero tornar público. No entanto, alguns dos commits iniciais contêm informações que eu não quero tornar públicas (credenciais codificadas, etc).
Qual é o caminho mais fácil para tornar público o commit mais recente (eu realmente não preciso nem quero os commit anteriores no repositório público) sem incluir parte ou todo o histórico de commit?
Respostas:
Você pode limitar a profundidade do histórico ao clonar :
Use isso se desejar um histórico limitado, mas ainda um pouco.
fonte
shallow update not allowed
.Use o seguinte comando:
Onde:
depth
é a quantidade de confirmações que você deseja incluir. ou seja, se você quiser apenas o uso de confirmação mais recentegit clone --depth 1
branch
é o nome da ramificação remota da qual você deseja clonar. ou seja, se você deseja os últimos 3 commit domaster
uso do branchgit clone --depth 3 -b master
repo_url
é o URL do seu repositóriofonte
shallow update not allowed
. Achei que essa resposta de estouro de pilha é útil nesse caso.A exclusão da
.git
pasta provavelmente é o caminho mais fácil, pois você não deseja / precisa do histórico (como disse Stephan).Assim, você pode criar um novo repositório a partir do seu commit mais recente: ( Como clonar o projeto seed / kick-start sem todo o histórico? )
exclua
.git
e depois executeOu se você deseja reutilizar seu repo atual: Torne o commit atual o único commit (inicial) em um repositório Git?
Siga os passos acima então:
Empurre para o seu repo.
fonte
fonte
--depth 1
é desnecessário neste caso porque o histórico também é excluído comrm -rf .git
git clone --depth 1 -b $src_branch $repo_src_url $dir && cd ./$dir && git commit --amend --author "Some One <[email protected]>" -m "Initial Commit" && git remote set-url origin $repo_trg_url && git push -u origin master
--depth 1
é desnecessário, mas também é inofensivo e ele salva um pouco de largura de banda de rede (nenhum ponto buscar uma história que você está prestes a excluir qualquer maneira)Não é exatamente isso que esmaga uma rebase? Apenas esmague tudo, exceto o último commit e, em seguida, (force) empurre.
fonte