Notez que l'utilisation du paramètre --depth=1
vous empêche de transférer le projet dans un nouveau référentiel.
pour plus de détails, voir: "Rejeté à distance" (mise à jour peu profonde non autorisée) après avoir modifié l'URL distante de Git
Tu peux faire un
git clone <git_url>
supprimez le référentiel .git de votre dossier. Ce qui effacera tout votre historique.
Le vous pouvez faire un
git init
ce qui créera un tout nouveau projet git pour vous.
Cela peut ne pas être le meilleur moyen. Mais ça va marcher. J'espère que ça aide.
Tant que vous considérez que la perte totale de l'historique n'est pas un problème, l'approche proposée par Ajay est parfaitement valable. Mais si vous souhaitez conserver l'historique de votre clone peu profond, j'ai une suggestion différente.
Un clone peu profond prétend avoir l'historique complet en utilisant un soi-disant point de greffe pour simuler le parent du "premier" commit. Si nous supposons que tout l'historique est disponible, nous pourrions reformuler la question: Comment puis-je jeter l'historique avant une révision spécifique?
Cela signifie que nous pouvons utiliser une combinaison de point de greffe et git filter-branch
(comme suggéré dans la question liée). Cependant, vous devez noter que cela réécrira votre historique complet, rendant le nouvel historique incompatible avec la télécommande que nous avons initialement clonée. Pour cette raison, nous devrions supprimer l'ancienne télécommande de notre référentiel.
git remote remove <old-remote-name>
Nous pouvons maintenant commencer notre réécriture. Supposons que nous voulions que master actuel valide la nouvelle racine du référentiel.
git rev-parse --verify master >> .git/info/grafts
git filter-branch -- --all
Ceci réécrira l'historique complet de notre référentiel, avec le commit principal actuel comme nouvelle racine. Vous pouvez finaliser la réécriture en supprimant les références "de sauvegarde" dans refs/original
. De plus, vous pouvez maintenant supprimer le fichier .git/shallow
.
Une fois que vous avez terminé, vous devriez être en mesure d’afficher l’historique maintenant ungrafted dans votre nouvelle télécommande.
Essayez quelque chose comme ça:
mkdir -p /tmp/git-copy
cd /tmp/git-copy
# create another copy of your repository
git clone file:///path/to/cloned/repo
cd repo
git rebase -i (first-commit)
# in vim:
# :2,$s/^pick/squash
# :w
# Now wait, it will take a while...
git Push --mirror [email protected]:username/new-repo.git
Je l'ai essayé tout à l'heure sur ce référentiel . Semble fonctionner - aucune histoire et tous les sous-modules sont intacts.