如何从git克隆的项目中删除版本跟踪?


685

我想从项目目录中删除所有版本跟踪。

正确的方法是什么?

我可以执行以下shell命令吗?

rm -rf .git

从我的项目目录还是有一种方法可以作为Git命令执行?

我使用这个项目来学习Git,并意识到在项目的早期,我曾因移动,重命名和删除文件而犯了一些错误。我想删除所有的Git跟踪,并从重新开始git init



2
根据错误的严重程度,您实际上可能希望对整个事件进行交互式重新整理,并尽早将大量的提交压缩在一起,但要保存最近的良好历史记录。
卡斯卡贝尔2011年

6
Windows用户:rd /s /q .git
Soorena

Answers:


686

Git用于信息的所有数据都存储在中.git/,因此删除它应该可以正常工作。当然,请确保您的工作副本处于所需状态,因为其他所有内容都会丢失。.git文件夹是隐藏的,因此请确保打开该Show hidden files, folders and disks选项。

从那里,您可以运行git init以创建一个新的存储库。


1
我敢肯定我的子文件夹没有自己隐藏的.git目录,但是当将这些文件夹推到github时,我仍然看到灰色图标...还有什么我可以尝试的吗?
Kokodoko

1
还有.gitconfig,因此您也应该删除它。
马克西米利安·莫尔迪格

考虑'code'git rm -r --cached your_folder /我的目标是将一个跟踪的git文件夹转换为另一个跟踪的git文件夹的子文件夹。直到我删除了子文件夹的缓存,新的父代才能识别新的子代。
瑞安·休伯特19''Sep

419

rm -rf .git应该足够了。那将吹走所有与Git相关的信息。


1
如果您cannot unlink Permission denied在Windows中找到某些文件,则可以explorer在任务管理器中终止进程,然后重新运行rm -rf .git并重新打开资源管理器。这个对我有用!
迈克尔

10
如果您Git Bash在Windows上也可以使用。
病毒式的病毒

1
什么-rf意思
nilon

13
-r表示“递归”,因此它将删除文件夹的全部内容,而不是因为文件夹不为空而出错,并且-f不会询问您是否确实确定要删除内容。
莉莉·巴拉德

1
@Lucky_girl它将从您的结帐中删除所有Git状态。没有分支机构,没有历史记录,没有遥控器,什么也没有。所有这些东西都存储在.git目录中。没有它,您实际上就没有git存储库了。
莉莉·巴拉德

96

除了以下步骤之外,您可能还希望删除.gitignore文件。

  • 如果要删除项目中的任何Git痕迹,请考虑删除.gitignore文件。

  • **如果您想将Git重新合并到项目中,请考虑保留.gitignore文件。

某些框架可能会自动生成.gitignore文件,因此您可能希望保留它。


基于Linux,Mac或Unix的操作系统

打开终端并导航到项目的目录,即- cd path_to_your_project

运行以下命令:

rm -rf .git*

这将从您的项目中删除Git跟踪和元数据。如果要保留元数据(例如.gitignore和.gitkeep),则可以通过运行来仅删除跟踪rm -rf .git


视窗

使用命令提示符

rmdirrd命令将不会删除/删除您指定的目录范围内所有隐藏文件或文件夹,所以你应该使用的del命令,确保所有文件都从删除.git的文件夹。

  1. 打开命令提示符

    1. 单击Start然后Run或同时Windows键按键r

    2. 类型cmd和命中进入

  2. 导航到项目目录,即- cd path_to_your_project

  1. 运行这些命令

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

    2. rmdir .git

第一个命令删除所有文件和文件夹.git文件夹。第二个删除.git文件夹本身。

无命令提示

  1. 打开文件浏览器并导航到您的项目

  2. 显示隐藏的文件和文件夹-请参阅本文以获取直观指南

    1. 在工具栏上的视图菜单中,选择 Options

    2. 在此Advanced Settings部分中,找到列表Hidden files and Folders下方,Files and Folders然后选择Show hidden files and folders

  3. 关闭选项菜单,您应该看到所有隐藏的文件夹和文件,包括该.git文件夹。

    删除.git文件夹删除.gitignore文件**(请参阅此答案顶部的注释)


1
rmdir .git不起作用,因为它下面有文件夹。
Dale

戴尔,检查下的行rmdir .git。它解释说rmdir .git,在rmdir命令删除文件夹本身之前,上面的命令用于删除.git文件夹中的所有文件和文件夹。
Matt C

1
您也可以这样做rd /s /q .git,这将删除文件夹及其中的所有内容
Greg

对于Windows,请rmdir /S .git完成工作。谢谢你
Eder Luis Jorge

70

.git*手动移动并不是一个明智的选择,尤其是当这些.git文件隐藏在子文件夹中时,就像我的情况一样:当我通过composer + git安装Skeleton Zend 2时,.git在文件夹和子文件夹中创建了大量文件文件夹。

rm -rf .git在GitHub Shell上进行了尝试,但是该Shell无法识别-rfRemove-Item 的参数。

www.montanaflynn.me引入了以下shell命令,.git递归方式一次删除所有文件!真的有效!

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

5
“我在Github外壳程序上尝试了'rm -rf .git',但是外壳程序无法识别Remove-Item的参数'-rf'。” -这是因为rm是PowerShell的别名remove-item。并且-rf是* nix shell rm参数。对于PowerShell,请rm -recursive -force改用。
KFL 2015年

14
危险!grep .git将匹配文件legit.gif名中间的“ git”之类的文件!请删除或编辑答案!!!
pamatt

4
更新以仅匹配git dirs:find。| grep“ \ .git /”
Andrew

3
仍然不够安全:这将捕获以结尾的文件和目录.git。应该是grep "^\.git/"; 更好(更快)的方法是在find调用中按名称过滤:find . -name .git
pvgoran

请执行以下命令:find -name .git | xargs rm -rffind -name .gitignore | xargs rm -rf
开发人员MariusŽilėnas18年

14

我正在使用Linux环境。我以递归方式删除了所有Git文件和文件夹:

rm -rf .git

rm -rf .gitkeep

9

在Windows环境中,您只需输入以下内容即可从项目目录中删除Git跟踪。

rd .git /S/Q

7

从根文件夹运行

find . | grep .git

查看匹配项,并确认它仅包含您要删除并调整为适合的文件。一旦满意,运行

find . | grep .git | xargs rm -rf


5

解决此问题的最简单方法是使用命令行。rm -R .git/输入此命令,然后rm -rf .git/按Enter ... 或按Enter ...


2

Windows命令提示符(cmd)用户:

您可以使用单行命令在源项目文件夹中递归删除“ .git”。

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.