web-dev-qa-db-fra.com

Supprimer tout l'historique des validations Git

J'essaie de récupérer un dépôt de Github, de rétablir une balise dans le passé, de la pousser vers une autre télécommande en supprimant tout l'historique. Je peux tout faire avec ci-dessous, sauf supprimer tous les journaux de validation. Qu'est-ce qui me manque?

git clone https://github.com/user/user-repo.git
cd user-repo
git reset --hard tags/v2.0
git remote add stash ssh://git@myserver:7999/myproject/user-repo.git
git Push --force stash master
19
noway

Je pensais que ce que vous vouliez était un repo comme un nouveau, donc supprimer le .git/ répertoire et le relancer sera plus simple.

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://git@myserver:7999/myproject/user-repo.git
git Push --force stash master
45
pktangyue

Vous pouvez utiliser git merge --squash pour écraser tous les commits en un, puis appuyez dessus.

3
wRAR

Parlez-vous essentiellement de regrouper toutes les validations en une seule validation ou souhaitez-vous conserver toutes les validations mais tronquer le message de validation réel?

Pour écraser les validations en une seule (et tronquer le message de validation final, si vous le souhaitez), vous pouvez utiliser un rebase interactif:

git rebase -i <whatever>

Pour tronquer les messages de validation réels mais conserver toutes les validations, utilisez le --msg-filter option pour git filter-branch.

1
Wil Cooley