git rm命令中的-f选项是什么意思?

3

我正在通过这本在线书学习Git。我不理解关于git rm命令的一些信息:

如果您已修改文件并将其添加到索引中,则必须使用-f选项强制删除。这是一个安全功能,以防止意外删除尚未在快照中记录且无法从Git中恢复的数据。

英语不是我的母语。我有一些问题需要正确翻译这个引用…“recorded in a snapshot”是什么意思?它是否是“committed”?

我看到git rm 123.txtgit rm -f 123.txt做的是一样的,即使123.txt已被更改并添加到索引中(即通过add命令添加到存储区):它会从索引和工作目录中删除123.txt。所以,我不理解-f选项的含义。请为我扩展它。

此外,我试图阅读这篇文章

要删除的文件必须与分支的尖端相同,并且不能在索引中暂存其内容的更新,尽管可以使用-f选项覆盖该默认行为。

还有这个:

-f
--force
覆盖最新检查。

tip of the branch”是什么?-f选项是什么意思?


“当前分支的尖端”是由HEAD引用的分支。 HEAD是下一个提交的父级。 HEAD也可以指向一个提交,此时,“分支的尖端”未定义。 - galath
2个回答

1

有很多问题。

-f 是必要的,因为 git 不知道您在删除之前是否要保存当前更改。您会收到警告,并可以选择在删除之前进行提交。这样,如果您决定恢复文件,则不会丢失进度。

添加文件将其更改从您的工作副本(本地目录)移动到暂存区。这是一个您可以在提交之前放置更改并查看它们的区域。

git diff --staging

记录快照本质上是一个提交,但根据您的说法,我在想暂存区是否也被认为是一个快照。稍后我在计算机旁尝试并更新。
分支的末端是你在该分支上最后一次进行的提交,这是在您添加到暂存区之后。
git commit

简而言之,-f 的意思是你在说“我不关心更改,只需删除”。

1
尝试在git仓库中更改并删除文件。例如:
 $ git status
 # On branch master
 # Your branch is up-to-date with 'origin/master'.
 # nothing to commit, working directory clean

 $ echo "a" >> http.c

尝试将其移除:

并尝试将其移除:

 $ git rm http.c

you will get:

git rm http.c
error: the following file has local modifications:
    http.c

因此,-f/--force选项将允许删除它:
$ git rm -f http.c
rm 'http.c'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接