git - 将 Git 工作目录转换为裸存储库?

标签 git

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

但是,一旦您克隆了一个组件,将其从构建中移除是有问题的:

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

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

最佳答案

找到similarquestions这并没有完全满足我的要求,this article提供了答案:创建一个空分支。

git checkout --orphan empty
git rm -rf .
git commit --allow-empty -m "An empty working directory"

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

设置完成后,您可以切换到任何分支以取回您的文件:

git checkout master

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

git checkout empty

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

git clean -fdx

关于git - 将 Git 工作目录转换为裸存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113801/

相关文章:

php - 为什么 Composer 安装突然失败?

git - 构建期间的 SSH 转发仅适用于 root

linux - 在 Debian 上使用 qtcreator 的 QSerialPort 问题

node.js - git push heroku master 失败并出现解析错误 - 哪个文件?

git update-index assume-unchanged 错误 : assume-unchanged: does not exist and --remove not passed

java - Git 提交对象作者和提交者字段

git - 如何获取当前提交的标签

Git 在 emacs 中提交而不改变窗口布局?

git - 删除名为 "remote"的本地分支

c++ - 在 Visual C++ 中使用 Git 进行自动版本控制