Comment supprimer le suivi de version d'un projet cloné depuis git?


687

Je souhaite supprimer tout le suivi des versions du répertoire d'un projet.

Quelle est la bonne méthode pour ce faire?

Puis-je exécuter une commande shell telle que:

rm -rf .git

à partir de mon répertoire de projets ou existe-t-il un moyen de le faire en tant que commande Git?

J'ai utilisé ce projet pour apprendre Git et réaliser que j'ai fait des erreurs au début du projet avec des fichiers déplacés, renommés et supprimés. Je voudrais supprimer tout le suivi Git et recommencer avec git init.


1
Considérez git-archive .
Martin

2
En fonction de la gravité des erreurs, vous voudrez peut-être faire une refonte interactive de l'ensemble et simplement écraser une tonne de commits tôt, mais enregistrer une bonne histoire plus récente.
Cascabel

6
pour les utilisateurs de Windows:rd /s /q .git
Soorena

Réponses:


689

Toutes les données utilisées par Git pour les informations sont stockées .git/, donc leur suppression devrait fonctionner correctement. Bien sûr, assurez-vous que votre copie de travail est dans l'état exact que vous souhaitez, car tout le reste sera perdu. .gitLe dossier est masqué, alors assurez-vous d'activer l' Show hidden files, folders and disksoption.

De là, vous pouvez exécuter git initpour créer un nouveau référentiel.


1
Je suis certain que mes sous-dossiers n'ont pas leur propre répertoire caché .git, mais je reçois toujours l'icône grisée lorsque je pousse ces dossiers dans github ... puis-je essayer autre chose?
Kokodoko

1
Il existe également .gitconfig, vous devez donc également le supprimer.
Maximilian Mordig

considérez 'code'git rm -r --cached your_folder / mon objectif était de transformer un dossier git suivi en dossier enfant d'un autre dossier git suivi. Le nouveau parent ne reconnaîtrait pas le nouvel enfant tant que je n'aurais pas supprimé le cache du dossier enfant.
Ryan Huebert

420

rm -rf .gitdevrait suffire. Cela effacera toutes les informations liées à Git.


1
Si vous en obtenez cannot unlink Permission denieddans Windows, vous pouvez tuer le explorerprocessus dans le gestionnaire de tâches, réexécuter rm -rf .gitet rouvrir l'explorateur après cela. ça marche pour moi!
Michael

10
Si vous en avez Git Bashsur Windows, cela fonctionnera également.
Viral

1
qu'est-ce que cela -rfsignifie?
nilon le

13
-rsignifie "récursif", donc il supprimera tout le contenu du dossier au lieu de générer des erreurs car le dossier n'est pas vide et -fne vous demande pas si vous êtes vraiment sûr de supprimer des éléments.
Lily Ballard

1
@Lucky_girl Il supprimera tous les états Git de votre paiement. Pas de succursales, pas d'histoire, pas de télécommandes, rien du tout. Tout cela est stocké dans le .gitrépertoire. Sans cela, vous n'avez littéralement plus de référentiel git.
Lily Ballard

96

En plus des étapes ci-dessous, vous souhaiterez peut-être également supprimer le fichier .gitignore.

  • Pensez à supprimer le fichier .gitignore si vous souhaitez supprimer toute trace de Git dans votre projet.

  • ** Pensez à laisser le fichier .gitignore si vous souhaitez réintégrer Git dans le projet.

Certains frameworks peuvent produire automatiquement le fichier .gitignore, vous pouvez donc le laisser.


Systèmes d'exploitation basés sur Linux, Mac ou Unix

Ouvrez un terminal et accédez au répertoire de votre projet, c'est-à-dire - cd path_to_your_project.

Exécutez cette commande:

rm -rf .git*

Cela supprimera le suivi Git et les métadonnées de votre projet. Si vous souhaitez conserver les métadonnées (telles que .gitignore et .gitkeep), vous pouvez supprimer uniquement le suivi en exécutant rm -rf .git.


les fenêtres

Utilisation de l'invite de commande

La commande rmdirourd ne supprimera / supprimera aucun fichier ou dossier caché dans le répertoire que vous spécifiez, vous devez donc utiliser la delcommande pour vous assurer que tous les fichiers sont supprimés du .gitdossier.

  1. Ouvrez l'invite de commande

    1. Cliquez Startensuite sur Runou appuyez sur la Touche Windowstouche et ren même temps.

    2. Tapez cmdet appuyez sur Entrée

  2. Accédez au répertoire du projet, c'est-à-dire - cd path_to_your_project

  1. Exécutez ces commandes

    1. del /F /S /Q /A .git

    2. rmdir .git

La première commande supprime tous les fichiers et dossiers dans le .gitdossier. Le second supprime le .gitdossier lui-même.

Aucune invite de commande

  1. Ouvrez l'explorateur de fichiers et accédez à votre projet

  2. Afficher les fichiers et dossiers cachés - reportez-vous à cet article pour un guide visuel

    1. Dans le menu Affichage de la barre d'outils, sélectionnez Options

    2. Dans la Advanced Settingssection, recherchez Hidden files and Folderssous la Files and Foldersliste et sélectionnezShow hidden files and folders

  3. Fermez le menu d'options et vous devriez voir tous les dossiers et fichiers cachés, y compris le .gitdossier.

    Supprimer le .gitdossier Supprimer le .gitignorefichier ** (voir note en haut de cette réponse)


1
rmdir .gitne fonctionne pas car il y a des dossiers en dessous.
Dale

Dale, regarde la ligne en dessous rmdir .git. Il explique que la commande ci rmdir .git- dessus est utilisée pour supprimer tous les fichiers et dossiers du dossier .git, avant que la rmdircommande ne supprime le dossier lui-même.
Matt C

1
vous pourriez aussi bien le faire rd /s /q .git, ce qui fera exploser le dossier et tout ce qu'il
contient

Pour Windows, rmdir /S .gitle travail a été fait. Merci pour cela.
Eder Luis Jorge

70

Ce n'est pas un choix intelligent de se déplacer tout .git*à la main, en particulier lorsque ces .gitfichiers sont cachés dans des sous-dossiers, tout comme mon état: lorsque j'ai installé Skeleton Zend 2 par composer + git, il y a un certain nombre de .gitfichiers créés dans des dossiers et des sous- Dossiers.

J'ai essayé rm -rf .gitmon shell GitHub, mais le shell ne peut pas reconnaître le paramètre -rfRemove-Item.

www.montanaflynn.me introduit la commande shell suivante pour supprimer tous les .gitfichiers une fois, récursivement! Ça marche vraiment!

find . | grep "\.git/" | xargs rm -rf

5
"J'ai essayé 'rm -rf .git' sur mon shell Github, mais le shell ne peut pas reconnaître le paramètre '-rf' de Remove-Item." - c'est parce que rmc'est un alias PowerShell pour remove-item. Et -rfest des rmarguments shell * nix . Pour PowerShell, utilisez rm -recursive -forceplutôt.
KFL

14
DANGEREUX! grep .gitcorrespondrait à des fichiers comme legit.gifou avec "git" au milieu du nom de fichier! Veuillez supprimer ou modifier la réponse !!!
Pamatt

4
Mettre à jour pour correspondre uniquement aux répertoires git: find. | grep "\ .git /"
Andrew

3
Toujours pas assez sûr: cela interceptera les fichiers et répertoires se terminant par .git. Ça devrait être grep "^\.git/"; encore mieux (et plus rapide) serait filtrer par nom dans l' findinvocation: find . -name .git.
pvgoran

Exécutez les commandes suivantes: find -name .git | xargs rm -rfet find -name .gitignore | xargs rm -rf.
Développeur Marius Žilėnas

14

Je travaille avec un environnement Linux. J'ai supprimé tous les fichiers et dossiers Git de manière récursive:

rm -rf .git

rm -rf .gitkeep

9

Dans un environnement Windows, vous pouvez supprimer le suivi Git du répertoire d'un projet en tapant simplement ci-dessous.

rd .git /S/Q

7

Depuis le dossier racine, exécutez

find . | grep .git

Vérifiez les correspondances et confirmez qu'il ne contient que les fichiers que vous souhaitez supprimer et ajuster en fonction. Une fois satisfait, exécutez

find . | grep .git | xargs rm -rf


5

La manière la plus simple de résoudre ce problème consiste à utiliser une ligne de commande. Tapez cette commande, rm -R .git/puis entrez ... OU rm -rf .git/appuyez sur Entrée ...


2

Utilisateur d'invite de commande Windows (cmd):

Vous pouvez supprimer récursivement '.git' dans le dossier du projet source à l'aide d'une seule ligne de commande.

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.