2013-02-19 19 views
15

Sto provando a recuperare un repository da Github, ripristinare un tag in passato, inviarlo a un altro telecomando con l'eliminazione di tutta la cronologia. Posso fare tutto con sotto ad eccezione dell'eliminazione di tutti i registri di commit. Cosa mi manca?Elimina tutto Git Commit History

git clone https://github.com/user/user-repo.git 
cd user-repo 
git reset --hard tags/v2.0 
git remote add stash ssh://[email protected]:7999/myproject/user-repo.git 
git push --force stash master 

risposta

33

Ho pensato che quello che vuoi è un repository come uno nuovo, quindi eliminare la directory .git/ e riattivarlo sarà più semplice.

git clone https://github.com/user/user-repo.git 
cd user-repo 
git reset --hard tags/v2.0 

rm -rf .git/ 
git init 
git add . 
git commit -m 'first commit' 

git remote add stash ssh://[email protected]:7999/myproject/user-repo.git 
git push --force stash master 
+0

Grazie, questo è quello che ho finito prima di leggere il tuo post. Ho fatto esattamente la stessa cosa :) – noway

+0

Questo mi ha aiutato moltissimo! Grazie – breezy

+0

Questo è quello che voglio. – Shaowu

3

È possibile utilizzare git merge --squash di schiacciare tutti i commit in uno e poi spingerlo.

1

Stai parlando di arrotolare tutti i commit in un commit o vuoi mantenere tutti i commit ma troncare il messaggio di commit effettivo?

di schiacciare i commit in un unico (e troncare il messaggio finale commit, se si vuole), è possibile utilizzare un rebase interattivo:

git rebase -i <whatever> 

per troncare il reale messaggi di commit ma mantengono tutti i commit, utilizzare l'opzione --msg-filter su git filter-branch.