GIT:是否应该使用强制操作?

7
Git在许多操作中都有--force标志,但当我使用它们时感觉有些奇怪,就像忽略代码中的警告消息一样。
例如,我只想取消暂存一个文件,就这样做了:
git rm --cached myfile.ext

git报错:

以下文件的暂存内容与文件和HEAD不同

我并不关心这个错误,它似乎不是问题——我只想保留我的代码,但是取消暂存该文件。使用--force标志可以简单地解决此问题。

我的问题是关于最佳实践,因为我无法找到有关此问题的任何信息——是否应该在git命令中使用force标志,还是这是一种不好的做法

更新

我发现了我的这个问题,并且有一些见解可能对任何感兴趣的人有用。

force标志就像git(或任何类似软件)中的yes/no对话框。当执行可能会失败或损坏某些东西的操作时,通常会出现yes/no对话框。因此,git中等效于yes的是--force,这回答了我的问题,即force标志的使用只是正常例程。

2个回答

6

--force并不意味着冒险尝试可能会出错的操作,而是强制执行某个动作时要注意可能存在的冲突。因此我认为使用--force并不是一个坏习惯。

通常情况下,你需要覆盖一些git命令中设置的检查以防止你做一些愚蠢的事情。如果你留意到警告并知道命令将成功执行,使用--force并没有什么不好的。请参考文档(或命令行上的git帮助页面)了解每个命令覆盖的内容。

另一个用例是在从脚本运行命令时避免确认提示,这种情况下你可能不想或无法处理用户交互。


1
自动化执行的细节处理得很好! - lukas.pukenis

3
首先,要取消暂存,您可以执行git reset -- file命令。参考资料 其次,使用--force并不是一个不好的习惯。
一个常见的例子是当您想要将一个在被忽略文件中(在.gitignore文件中声明)的文件添加到源代码控制中时。
git add --force -- aFile

不要忘记,一些命令(例如git add)具有“预览”或“干运行”模式(-n选项)。另一个好的实践方法是使用-n选项测试该命令。


我不想删除任何未提交的代码(git reset),我只想取消暂存文件:)。我刚刚添加了新文件,编写了代码,但不想在下一次提交中包含它。因此,我想要取消暂存并稍后再添加它。 - lukas.pukenis
@lukas.pukenis 这并不会删除任何东西。它不会改变你的文件。它只是将其从索引中移除。 - VonC
刚刚意识到git reset --hard可以删除代码!感谢! :) 并且+1赞同使用-n参数。我之前不知道这个参数。 - lukas.pukenis
关于取消暂存(不删除任何文件)的 git resetgit rm --cached 的区别,可以查看 @lukas.pukenis 的这篇文章:https://dev59.com/mnRC5IYBdhLWcg3wSu97#6049090 - VonC

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