【问题标题】:git rm removing physical files even without -fgit rm 即使没有 -f 也会删除物理文件
【发布时间】:2019-12-06 01:31:24
【问题描述】:

我对 Git 很陌生,所以这对某些人来说可能很明显。

以前我通过git rm <file> 删除文件(不是物理上,只是从存储库中)。

然后由于我不会进入的原因,我不得不强制删除,即git rm -f <file>

问题:从那时起,运行git rm 没有 -f 参数也会删除物理文件,好像它记得-f 并且是为以后的每个请求假设它。

为什么会发生这种情况,我该如何阻止它?

【问题讨论】:

    标签: git github cmd command git-bash


    【解决方案1】:

    git rm 命令从工作树和索引中删除文件。被删除的文件必须与分支的尖端相同,并且不能在索引中暂存对其内容的更新。

    使用 -f 选项,我们只针对分支中的文件覆盖正在删除的文件的最新检查。

    在您的情况下,我认为被删除的较早文件的内容与分支中的内容不同,因此,您必须在 git rm 命令中使用 -f 选项,但现在由于它们处于同步删除状态,因此无需-f 选项。

    参考:Git RM Doc

    【讨论】:

    • 嗯...好的,那么我如何从索引中删除某些内容而不是物理文件,而不管差异如何?我的情况基本上是在我意识到它应该是.gitignore'd之前添加了一个文件,所以我需要从索引中删除它,而不是从服务器中删除文件本身!
    • 我认为最好的办法是将文件移动到 git-ignored 临时。
    • 为了从 repo 中删除文件但保留在本地,我们可以使用 git rm 命令的 --cached 选项。
    【解决方案2】:

    如您所见,git rm 从工作树和索引中删除文件。如果工作树中的文件在磁盘上已更改,但与索引中的版本不同,则需要使用-f。如果它们相同,则不需要-f

    但是,如果您想在工作树中保留版本但在索引中删除版本(从而将其从存储库中暂存),请使用git rm --cached。这将留下工作树版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2015-08-05
      • 1970-01-01
      • 2022-11-03
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多