繁体   English   中英

如何彻底清理git工作目录?

[英]How do I completely clean a git working directory?

在mercurial中,我习惯于hg up 00来完全清理工作目录。

这在执行hg init之后立即将工作目录重置为其状态。

git有任何等价物吗?

请注意, hg up 00hg up 0 ,后者更新为提交的第一个修订版,而是等同于hg up null ,只需要输入几个字符。 * 8' )

另请注意,我不想在git工作目录的根目录中执行rm -rf * ,因为git status将显示已删除的所有文件。 我只想在第一次提交之前将存储库更新到它的状态。 通过网络和git手册我的搜索没有提供我需要的信息,以了解如何在git做到这一点。

作为背景,我想保留存储库,以便我以后可以轻松签出不同的提交。 我想这样做的一个原因是我有一个非常大的存储库(实际上是一个git svn repo)而且我不想再次重新克隆它(它需要几天才能完成而你不是应该克隆一个gitsvn repo)。 我确实希望能够在我不需要时释放工作副本所占用的空间。

这似乎是一件不寻常的事情,git branches以一个通常非空的初始提交开始。 在使用常规git命令进行初始提交之前,您不能“检出”或“重置”。

您可以使用此命令将当前结帐分支重置为“未创建”状态,以准备进行新的初始提交。

git updated-ref -d "$(git symbolic-ref HEAD)"

这将删除当前签出的分支。

然后,您可以使用此命令从索引中删除所有文件(假设您位于存储库的根目录下)。

git rm -r --cached .

如果您有未分级的更改,则可能需要-f开关。

最后,您可以使用此命令清除工作树中的所有文件。 警告:有潜在危险

git clean -fd # WARNING, dangerous

等效的null修订版在git中称为裸存储库 此搜索提供了该主题的粗略概述,可以在此处找到将非裸转换为裸回购的不同方式。

与hg不同,没有简单的方法可以在裸存储库和非裸存储库之间切换。 此外,您不应该进入非裸存储库,因为推送将更改git的索引,但不会更新工作树。 有关详细信息,请参阅使用2台笔记本电脑中的git,没有裸仓库

这些是我想到的解决方案:

1-您可以从工作目录中删除.git目录,并且您的工作目录中不会有git存储库。

2-您可以通过发出以下命令重置为初始提交(初始提交仍将保留):

git reset --hard `git rev-list HEAD | tail -n 1`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM