所有 git 命令都有预运行选项吗?

是所有 git 命令都有一个—— dry-run 选项,还是一个指示命令在不实际执行的情况下将执行什么操作的选项?

63011 次浏览

While there isn't always a --dry-run flag for every comment, there are usually equivalents. For example, this previous question shows what to do for git merge.

Not every command would naturally support a dry run directly.

  • git merge has its own option (git merge --no-commit --no-ff)
  • but git pull does not really need it ('git fetch origin', then a 'git log master..origin/master', before a git merge origin/master)
    (but git push has a dry-run option)

As J.C. Hamano summarizes:

There are things that are not implemented in git because they do not make sense, and there are things that are not implemented in git because nobody had itch to scratch for.
To put it differently, we tend to implement only things that there are actual, demonstrated needs for from real world and only when the addition makes sense as a coherent part of the system.


iboisver comments:

Another thing to be aware of is that commands like git add and git rm allow the -n command-line option to specify dry run, while in git commit, the -n option means something completely different.
So be sure to check the man page

git commit -n:

-n
--no-verify

This option bypasses the pre-commit and commit-msg hooks. See also githooks(5).