1

我懂了

git apply --reject
git apply --include

总是打印关于哪些文件被考虑和拒绝从补丁文件传递的完整信息。因此,选项通过--verbose时似乎 git 使用的模式。--reject

选项是否--verbose打印了--reject 选项未打印的任何其他信息?我也没有在git-apply文档中找到任何相关细节。

git apply --index change-89ded3243ea944156abb9d1c44173d998a4aed59..b3645cd3600b7d1c728c84333b48a20ce5c4eb29.patch
Done applying sandbox package.

git apply --reject change-89ded3243ea944156abb9d1c44173d998a4aed59..b3645cd3600b7d1c728c84333b48a20ce5c4eb29.patch
Checking patch support/gobuild/helpers/python.py...
Checking patch support/gobuild/helpers/target.py...
Checking patch support/gobuild/py/__init__.py...
Checking patch support/gobuild/py/autotools.py...
Checking patch support/gobuild/specs/cayman_pycrypto.py...
Checking patch support/gobuild/targets/cayman_pycrypto.py...
warning: support/gobuild/targets/cayman_pycrypto.py has type 100644, expected 100755
Applied patch support/gobuild/helpers/python.py cleanly.
Applied patch support/gobuild/helpers/target.py cleanly.
Applied patch support/gobuild/py/__init__.py cleanly.
Applied patch support/gobuild/py/autotools.py cleanly.
Applied patch support/gobuild/specs/cayman_pycrypto.py cleanly.
Applied patch support/gobuild/targets/cayman_pycrypto.py cleanly.
Done applying sandbox package.
4

1 回答 1

0

--include选项对详细级别没有影响:它只是说修补过程应该将更改应用于命名文件,这当然意味着它不应该更改应用于其他文件。也就是说,补丁可能会提到文件this.txtthat.pyREADME. 如果您说“包括更改,this.txt并且README”您是在暗示“请不要对”进行任何更改that.py

--verbose选项实际上是一个计数器:使用一次,它将详细级别从零或“正常”提高到 1 或“详细”,使用两次它会将其提高。但是,这里没有针对更高数字的特殊操作(一些 Git 命令确实有多个详细级别,例如,git branch有两个)。有一个特殊的负 1 级别,但您不能自己设置(它在git am应用多个补丁时自动使用,每次应用后提交)。

--reject选项自动将详细级别提高到至少 1。因此,在内部,选项序列:

git apply --verbose --reject

表示“将详细级别设置为 1,并设置拒绝模式”,而:

git apply --reject --verbose

表示“将详细级别设置为 2,并设置拒绝模式”。

长格式选项longopt通常允许使用清除它们。(有一些例外,但这不是例外。)因此:no-longopt

git apply --reject --no-verbose

将启用拒绝模式,同时将详细级别设置回零(“正常”详细程度:仍会打印一些内容)。

于 2017-05-29T15:05:09.270 回答