将 Git 工作目录转换为类似裸机的存储库?

Sye*_*man 5 git

我们的开发环境使用多个存储库作为整个构建系统的一部分。构建会根据您签出的存储库动态调整:如果您不需要构建特定组件,请不要克隆它。

然而,一旦你已经克隆一个组成部分,从构建删除它是有问题的:

  • 您可以删除工作目录中的文件,但git status会显示未提交的更改
  • 您可以删除存储库,但需要在再次需要时重新克隆
  • 您可以移动存储库,但您的多存储库工具可能“有用”地重新克隆

有没有更好的方法来删除工作目录的文件?类似于hg co null或 的东西p4 sync ...#none

Sye*_*man 3

在发现类似的 问题并没有完全达到我想要的效果后,本文提供了答案:创建一个空分支。

git checkout --orphan empty
git rm -rf .
git commit --allow-empty -m "An empty working directory"
Run Code Online (Sandbox Code Playgroud)

当然,请确保您首先已将所有重要文件提交到您的存储库中。我已将此分支命名为empty,但您可以通过checkout命令为其指定任何名称。

设置完成后,您可以切换到任何分支以恢复文件:

git checkout master
Run Code Online (Sandbox Code Playgroud)

当您需要“删除”工作目录时,提交更改,然后运行:

git checkout empty
Run Code Online (Sandbox Code Playgroud)

这将删除所有跟踪的文件。如果您还需要删除未跟踪的文件和目录,请执行以下操作:

git clean -fdx
Run Code Online (Sandbox Code Playgroud)