【问题标题】:rm only for working tree, only for files in gitrm 仅适用于工作树,仅适用于 git 中的文件
【发布时间】:2015-10-09 02:41:07
【问题描述】:

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

没有选项可以仅从工作树中删除文件,但 将其保存在索引中;如果你想这样做,请使用 /bin/rm。

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

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

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

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

  1. 删除所有 git 控制的文件
  2. 将文件从 dev 根目录复制到 Web 根目录
  3. 对索引添加任何更改,然后提交。

这样可以保证我的 Web 根目录永远不会被陈旧的文件污染。这也为我想要探索的更多机会打开了大门。

【问题讨论】:

标签: git version-control development-environment


【解决方案1】:

这是否是一个好方法值得商榷,但我确实一起破解了一些有效的方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2021-04-18
    • 2016-04-20
    • 2014-12-09
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多