从git存储库中删除工作文件,以节省空间

时间:2016-02-12 05:59:30

标签: git file diskspace

我的磁盘上有很多GitHub项目,但其中很多都没有正在使用。

我想暂时删除工作文件,因为它们无论如何都存储在提交历史记录中,所以我可以在以后检索它们。

删除文件的最简单方法是rm -rf *,但它有许多缺点:

  • 它不会删除.gitignore
  • 等点文件
  • 如果我稍后回来,git status会抱怨有很多被删除的文件。我必须弄清楚是否应该提交这些删除,或者我是否刚刚删除它们以暂时节省空间。

删除工作文件的快捷方法是什么?有没有办法干净利落地做到这一点?

2 个答案:

答案 0 :(得分:1)

创建一个空分支似乎很有效:

  1. 检查所有文件是否已安全地提交到分支机构(例如" master"或" develop"分支机构)。
  2. 创建一个空分支。我会称之为"空"。

    git checkout --orphan empty
    
  3. 但是这并没有删除文件。手动完成:

    git reset --hard
    
  4. 这个分支还没有真正存在。进行初始提交以确认它:

    git commit --allow-empty -m 'Empty commit'
    
  5. 现在你的所有文件都已消失,而你正处于体现这种情况的分支上。

    关于这个过程的好处:

    • 它使用git自己的机制。没有令人困惑的脏状态。
    • 当您看到分支名称时,很明显会发生什么。
    • 您可以使用git checkout master
    • 轻松切换回母版
    • 您可以使用git checkout empty
    • 轻松切换回空分支

    缺点:

    • 初始过程需要3个命令。
    • 如果您不熟悉分支机构或查看您所在的分支机构,当您返回该文件夹时,您可能会想知道所有文件的去向!

答案 1 :(得分:1)

如果您使用git 2.5.1或更高版本,则可以使用裸存储库,如果要检查或使用其内容,请使用git worktree add /some/checkout/path branch

worktree将完全作为标准git克隆工作,期望您在那里运行的所有修改(提交,新分支,标记......)都应用于裸克隆。

相关问题