Come rimuovo il rilevamento delle versioni da un progetto clonato da git?


686

Voglio rimuovere tutto il tracciamento della versione dalla directory di un progetto.

Qual è il metodo corretto per farlo?

Posso eseguire un comando shell come:

rm -rf .git

dalla mia directory dei progetti o c'è un modo per farlo come comando Git?

Ho usato questo progetto per imparare Git e rendermi conto di aver fatto alcuni errori all'inizio del progetto con file spostati, rinominati ed eliminati. Vorrei rimuovere tutto il monitoraggio Git e ricominciare da capo git init.


1
Prendi in considerazione git-archive .
Martin v. Löwis,

2
A seconda di quanto siano stati gravi gli errori, potresti effettivamente voler fare un rebase interattivo dell'intera faccenda e semplicemente mettere insieme un sacco di impegni all'inizio, ma salvare la storia più recente.
Cascabel,

6
per gli utenti di Windows:rd /s /q .git
Soorena,

Risposte:


688

Tutti i dati che Git utilizza per le informazioni sono archiviati .git/, quindi rimuoverli dovrebbe funzionare bene. Naturalmente, assicurati che la tua copia di lavoro sia nello stato esatto in cui la desideri, perché tutto il resto andrà perso. .gitla cartella è nascosta, quindi assicurati di attivare l' Show hidden files, folders and disksopzione.

Da lì, è possibile eseguire git initper creare un nuovo repository.


1
Sono certo che le mie sottocartelle non hanno la loro directory .git nascosta, ma ottengo ancora l'icona in grigio quando spingo quelle cartelle su github ... c'è qualcos'altro che posso provare?
Kokodoko,

1
C'è anche .gitconfig, quindi dovresti anche rimuoverlo.
Maximilian Mordig,

considera 'code'git rm -r --cached your_folder / il mio obiettivo era trasformare una cartella git tracciata in una cartella figlio di un'altra cartella git tracciata. Il nuovo genitore non riconoscerebbe il nuovo figlio finché non avessi rimosso la cache della cartella figlio.
Ryan Huebert,

420

rm -rf .gitdovrebbe bastare. Ciò spazzerà via tutte le informazioni relative a Git.


1
Se ne trovi alcuni cannot unlink Permission deniedin Windows, puoi terminare il explorerprocesso in Task Manager, rieseguire rm -rf .gite riaprire Explorer dopo. per me funziona!
Michael,

10
Se hai Git Bashsu Windows, funzionerà anche.
Virale

1
cosa -rfsignifica?
nilon,

13
-rsignifica "ricorsivo", quindi eliminerà l'intero contenuto della cartella invece di sbagliare perché la cartella non è vuota e -fnon chiede se sei davvero sicuro di eliminare qualcosa.
Lily Ballard,

1
@Lucky_girl Rimuoverà tutto lo stato Git dal tuo checkout. Niente rami, niente storia, niente telecomandi, niente di niente. Tutta quella roba è memorizzata nella .gitdirectory. Senza di esso, letteralmente non hai più un repository git.
Lily Ballard,

96

Oltre ai passaggi seguenti, potresti voler rimuovere anche il file .gitignore.

  • Prendi in considerazione la possibilità di rimuovere il file .gitignore se desideri rimuovere qualsiasi traccia di Git nel tuo progetto.

  • ** Prendi in considerazione l'idea di lasciare il file .gitignore se desideri reincorporare Git nel progetto.

Alcuni framework potrebbero produrre automaticamente il file .gitignore, quindi potresti voler lasciarlo.


Sistemi operativi basati su Linux, Mac o Unix

Apri un terminale e vai alla directory del tuo progetto, ovvero - cd path_to_your_project.

Esegui questo comando:

rm -rf .git*

Ciò rimuoverà il tracciamento di Git e i metadati dal tuo progetto. Se desideri conservare i metadati (come .gitignore e .gitkeep), puoi eliminare solo il tracciamento eseguendo rm -rf .git.


finestre

Utilizzando il prompt dei comandi

Il comando rmdirord non eliminerà / rimuoverà alcun file o cartella nascosti all'interno della directory specificata, pertanto è necessario utilizzare il delcomando per assicurarsi che tutti i file vengano rimossi dalla .gitcartella.

  1. Apri il prompt dei comandi

    1. Fare clic Startquindi Runo premere il Tasto Windowstasto e r, allo stesso tempo.

    2. Digita cmde premi invio

  2. Passare alla directory del progetto, ovvero - cd path_to_your_project

  1. Esegui questi comandi

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

    2. rmdir .git

Il primo comando rimuove tutti i file e le cartelle all'interno della .gitcartella. Il secondo rimuove la .gitcartella stessa.

Nessun prompt dei comandi

  1. Apri Esplora file e vai al tuo progetto

  2. Mostra file e cartelle nascosti: fai riferimento a questo articolo per una guida visiva

    1. Nel menu Visualizza sulla barra degli strumenti, selezionare Options

    2. Nella Advanced Settingssezione, trova Hidden files and Folderssotto l' Files and Folderselenco e selezionaShow hidden files and folders

  3. Chiudi il menu delle opzioni e dovresti vedere tutte le cartelle e i file nascosti inclusa la .gitcartella.

    Elimina la .gitcartella Elimina il .gitignorefile ** (vedi nota all'inizio di questa risposta)


1
rmdir .gitnon funziona perché ci sono cartelle sotto di esso.
Dale,

Dale, controlla la riga sotto rmdir .git. Spiega che il comando sopra rmdir .gitè usato per rimuovere tutti i file e le cartelle all'interno della cartella .git, prima che il rmdircomando rimuova la cartella stessa.
Matt C

1
potresti anche farlo rd /s /q .git, il che spazzerà via la cartella e tutto ciò che
contiene

Per Windows, rmdir /S .githo fatto il lavoro. Grazie per questo.
Eder Luis Jorge,

70

Non è una scelta intelligente spostare tutto .git*a mano, in particolare quando questi .gitfile sono nascosti in sottocartelle proprio come le mie condizioni: quando ho installato Skeleton Zend 2 di compositore + git, ci sono parecchi .gitfile creati in cartelle e sottocartelle cartelle.

Ho provato rm -rf .gitsulla mia shell GitHub, ma la shell non è in grado di riconoscere il parametro -rfdi Remove-Item.

www.montanaflynn.me introduce il seguente comando shell per rimuovere tutti i .gitfile una volta, ricorsivamente! Funziona davvero!

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

5
"Ho provato 'rm -rf .git' sulla mia shell Github, ma la shell non è in grado di riconoscere il parametro '-rf' di Remove-Item." - questo perché rmè un alias di PowerShell per remove-item. Ed -rfè * nix rmargomenti della shell . Per PowerShell, utilizzare rm -recursive -forceinvece.
KFL

14
PERICOLOSO! grep .gitcorrisponderebbe a file come legit.gifo anithing con "git" nel mezzo del nome file! Rimuovi o modifica la risposta !!!
pamatt,

4
Aggiorna in modo che corrisponda solo alle directory git: trova. | grep "\ .git /"
Andrew

3
Ancora non abbastanza sicuro: questo catturerà i file e le directory che finiscono con .git. Dovrebbe essere grep "^\.git/"; ancora migliore (e più veloce) sarebbe quello di filtro per nome in findinvocazione: find . -name .git.
pvgoran,

Eseguire i seguenti comandi: find -name .git | xargs rm -rfe find -name .gitignore | xargs rm -rf.
Sviluppatore Marius Žilėnas,

14

Sto lavorando con un ambiente Linux. Ho rimosso tutti i file e le cartelle Git in modo ricorsivo:

rm -rf .git

rm -rf .gitkeep

9

In un ambiente Windows puoi rimuovere Git tracking dalla directory di un progetto semplicemente digitando quanto segue.

rd .git /S/Q

7

Dalla cartella principale eseguita

find . | grep .git

Rivedi le partite e verifica che contenga solo i file che desideri eliminare e adattare. Una volta soddisfatto, corri

find . | grep .git | xargs rm -rf


5

Il modo più semplice per risolvere questo problema è utilizzare una riga di comando. Digita questo comando rm -R .git/quindi inserisci ... OPPURE rm -rf .git/premi Invio ...


2

Utente del prompt dei comandi di Windows (cmd):

È possibile eliminare '.git' in modo ricorsivo all'interno della cartella del progetto di origine utilizzando un comando a riga singola.

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.