rm仅适用于工作树,仅适用于git中的文件

问题描述:

Git-scm.org在其网站上非常清楚,git rm不能用于仅从工作树中删除文件。从git-scm.orgrm仅适用于工作树,仅适用于git中的文件

没有选项只从工作树中删除一个文件,但 保持它的指标;如果你想这样做,请使用/ bin/rm。

我的问题是:有没有办法可以做到这一点?本身不严格与git rm

我想这样做的原因是我在我的(C#)开发工作流程中有两个文件夹 - web根目录和我的开发根目录。当我构建我的项目时,所有项目文件都从开发根目录复制到Web根目录。作为这些项目文件的兄弟姐妹,我在web根目录中有一个大的CMS框架。这些安装一次,并与我的项目文件并排生活。

此工作流程的问题是,如果我更改文件的位置,或者我重命名文件,则不会删除旧文件。该过程是批量复制,并且我将在Web根目录中管理一个文件的两个版本。这会导致混淆错误。

我的想法是在我的web根目录中使用本地git存储库,并为所有CMS框架文件使用.gitignore。我想建立执行三个操作的脚本:

  1. 删除所有的git控制文件从开发根到网站根
  2. 添加任何改变指数
  3. 复制文件,提交它们。

这样我保证我的网站根本不会被陈旧的文件污染。这也为我想探索的更多机会打开了大门。

+0

我在这里回答了类似的问题:http://*.com/questions/ 31241850/get-deleted-files-list-from-git-commits/31242006#31242006 - 也许有什么可以帮助你。 'rsync'应该照顾你要找的东西...... – nwinkler

不管这是一个很好的做法是值得商榷的,但我没有黑客的东西在一起的作品:

for /f "tokens=4" %a in ('git ls-tree --full-name -r HEAD') DO rm %a