Como faço para remover o rastreamento de versão de um projeto clonado do git?


685

Quero remover todo o rastreamento de versão do diretório de um projeto.

Qual é o método correto para fazer isso?

Posso executar um comando shell como:

rm -rf .git

do meu diretório de projetos ou existe uma maneira de fazer isso como um comando Git?

Eu usei esse projeto para aprender o Git e percebi que cometi alguns erros no início do projeto com arquivos movidos, renomeados e excluídos. Gostaria de remover todo o rastreamento do Git e começar de novo git init.


1
Considere o git-archive .
Martin v. Löwis

2
Dependendo de quão ruins foram os erros, você pode realmente querer fazer uma nova revisão interativa da coisa toda e apenas juntar uma tonelada de confirmações desde o início, mas salve uma boa história mais recente.
Cascabel

6
para usuários do Windows:rd /s /q .git
Soorena 24/05

Respostas:


686

Todos os dados que o Git usa para informações são armazenados .git/, portanto, removê-los deve funcionar bem. Obviamente, verifique se sua cópia de trabalho está no estado exato que você deseja, pois todo o resto será perdido. .gitpasta está oculta, portanto, certifique-se de ativar oShow hidden files, folders and disks opção

A partir daí, você pode executar git initpara criar um repositório novo.


1
Estou certo de que minhas subpastas não têm seu próprio diretório .git oculto, mas ainda recebo o ícone acinzentado ao empurrar essas pastas para o github ... há mais alguma coisa que eu possa tentar?
Kokodoko

1
Há também .gitconfig, então você também deve removê-lo.
Maximilian Mordig

considere 'code'git rm -r --cache sua pasta / meu objetivo era transformar uma pasta git rastreada em uma pasta filha de outra pasta git rastreada. O novo pai não reconheceria o novo filho até eu remover o cache da pasta filho.
Ryan Huebert

419

rm -rf .gitdeve ser suficiente. Isso eliminará todas as informações relacionadas ao Git.


1
Se você obtiver alguma coisa cannot unlink Permission deniedno Windows, poderá matar o explorerprocesso no gerenciador de tarefas, executar novamente o rm -rf .gite reabrir o explorer depois disso. funciona para mim!
Michael

10
Se você tiver Git Bashjanelas, também funcionará.
Viral

1
o que -rfsignifica
Nilon

13
-rsignifica "recursivo"; portanto, ele excluirá todo o conteúdo da pasta, em vez de causar um erro, porque a pasta não está vazia e -fnão pergunta se você realmente tem certeza sobre a exclusão de itens.
Lily Ballard

1
@Lucky_girl Ele removerá todo o estado Git do seu checkout. Sem galhos, sem história, sem controles remotos, nada. Todo esse material é armazenado no .gitdiretório Sem ele, você literalmente não tem mais um repositório git.
Lily Ballard

96

Além das etapas abaixo, você também pode remover o arquivo .gitignore.

  • Considere remover o arquivo .gitignore se desejar remover qualquer vestígio do Git no seu projeto.

  • ** Considere deixar o arquivo .gitignore se você quiser reincorporar o Git ao projeto.

Algumas estruturas podem produzir automaticamente o arquivo .gitignore, portanto, você pode querer deixá-lo.


Sistemas operacionais baseados em Linux, Mac ou Unix

Abra um terminal e navegue até o diretório do seu projeto, ou seja, - cd path_to_your_project.

Execute este comando:

rm -rf .git*

Isso removerá o rastreamento e os metadados do Git do seu projeto. Se você deseja manter os metadados (como .gitignore e .gitkeep), é possível excluir apenas o rastreamento executando rm -rf .git.


janelas

Usando o prompt de comando

O comando rmdirourd não excluirá / removerá quaisquer arquivos ou pastas ocultos no diretório especificado, portanto, você deve usar o delcomando para garantir que todos os arquivos sejam removidos da .gitpasta.

  1. Abra o prompt de comando

    1. Clique Startentão Runou pressione a Chave do Windowstecla e rao mesmo tempo.

    2. Digite cmde pressione Enter

  2. Navegue para o diretório do projeto, ou seja - cd path_to_your_project

  1. Execute estes comandos

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

    2. rmdir .git

O primeiro comando remove todos os arquivos e pastas dentro da .gitpasta. O segundo remove a .gitprópria pasta.

Nenhum prompt de comando

  1. Abra o explorador de arquivos e navegue até o seu projeto

  2. Mostrar arquivos e pastas ocultos - consulte este artigo para obter um guia visual

    1. No menu Exibir da barra de ferramentas, selecione Options

    2. Na Advanced Settingsseção, localize Hidden files and Folderssob a Files and Folderslista e selecioneShow hidden files and folders

  3. Feche o menu de opções e você verá todas as pastas e arquivos ocultos, incluindo a .gitpasta.

    Excluir a .gitpasta Exclua o .gitignorearquivo ** (consulte a observação na parte superior desta resposta)


1
rmdir .gitnão funciona porque há pastas nele.
Dale

Dale, verifique a linha abaixo rmdir .git. Ele explica que o comando acima rmdir .gité usado para remover todos os arquivos e pastas da pasta .git, antes que o rmdircomando remova a própria pasta.
Matt C

1
você pode muito bem fazer rd /s /q .git, o que irá explodir a pasta e tudo nela
Greg

Para o Windows, rmdir /S .gitfez o trabalho. Obrigado por isso.
Eder Luis Jorge

70

Não é uma escolha inteligente mover tudo .git*manualmente, principalmente quando esses .gitarquivos estão ocultos em subpastas, exatamente como na minha condição: quando eu instalei o Skeleton Zend 2 pelo compositor + git, existem vários .gitarquivos criados em pastas e subpastas. pastas.

Eu tentei rm -rf .gitno meu shell GitHub, mas o shell não pode reconhecer o parâmetro -rfde Remove-Item.

www.montanaflynn.me introduz o seguinte comando shell para remover todos os .gitarquivos uma vez, recursivamente! Está realmente funcionando!

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

5
"Tentei 'rm -rf .git' no meu shell do Github, mas o shell não pode reconhecer o parâmetro '-rf' de Remove-Item." - isso é porque rmé um alias do PowerShell para remove-item. E -rfé * nix rmargumentos de shell . Para o PowerShell, use em seu rm -recursive -forcelugar.
KFL

14
PERIGOSO! grep .gitcombinaria arquivos como legit.gifou anithing com "git" no meio do nome do arquivo! Remova ou edite a resposta !!!
pamatt

4
Atualizar para corresponder apenas nos diretórios git: find. | grep "\ .git /"
Andrew

3
Ainda não é seguro o suficiente: isso irá capturar arquivos e diretórios que terminam com .git. Deveria ser grep "^\.git/"; ainda melhor (e mais rápido) seria para filtrar pelo nome na findinvocação: find . -name .git.
precisa saber é o seguinte

Execute os seguintes comandos: find -name .git | xargs rm -rfe find -name .gitignore | xargs rm -rf.
Desenvolvedor Marius Žilėnas 21/0318

14

Estou trabalhando com um ambiente Linux. Eu removi todos os arquivos e pastas do Git de maneira recursiva:

rm -rf .git

rm -rf .gitkeep

9

Em um ambiente Windows, você pode remover o rastreamento Git do diretório de um projeto, simplesmente digitando o abaixo.

rd .git /S/Q

7

Na pasta raiz, execute

find . | grep .git

Revise as correspondências e confirme se ela contém apenas os arquivos que você deseja excluir e ajustar para adequar. Uma vez satisfeito, execute

find . | grep .git | xargs rm -rf


5

A maneira mais fácil de resolver esse problema é usar uma linha de comando. Digite este comando rm -R .git/Em seguida, digite ... OU rm -rf .git/Pressione Enter ...


2

Usuário do prompt de comando do Windows (cmd):

Você pode excluir '.git' recursivamente dentro da pasta do projeto de origem usando um comando de linha única.

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.