rm仅适用于工作树,仅适用于git中的文件
问题描述:
Git-scm.org在其网站上非常清楚,git rm
不能用于仅从工作树中删除文件。从git-scm.org:rm仅适用于工作树,仅适用于git中的文件
没有选项只从工作树中删除一个文件,但 保持它的指标;如果你想这样做,请使用/ bin/rm。
我的问题是:有没有办法可以做到这一点?本身不严格与git rm
。
我想这样做的原因是我在我的(C#)开发工作流程中有两个文件夹 - web根目录和我的开发根目录。当我构建我的项目时,所有项目文件都从开发根目录复制到Web根目录。作为这些项目文件的兄弟姐妹,我在web根目录中有一个大的CMS框架。这些安装一次,并与我的项目文件并排生活。
此工作流程的问题是,如果我更改文件的位置,或者我重命名文件,则不会删除旧文件。该过程是批量复制,并且我将在Web根目录中管理一个文件的两个版本。这会导致混淆错误。
我的想法是在我的web根目录中使用本地git存储库,并为所有CMS框架文件使用.gitignore。我想建立执行三个操作的脚本:
- 删除所有的git控制文件从开发根到网站根
- 添加任何改变指数
- 复制文件,提交它们。
这样我保证我的网站根本不会被陈旧的文件污染。这也为我想探索的更多机会打开了大门。
答
不管这是一个很好的做法是值得商榷的,但我没有黑客的东西在一起的作品:
for /f "tokens=4" %a in ('git ls-tree --full-name -r HEAD') DO rm %a
我在这里回答了类似的问题:http://*.com/questions/ 31241850/get-deleted-files-list-from-git-commits/31242006#31242006 - 也许有什么可以帮助你。 'rsync'应该照顾你要找的东西...... – nwinkler