这个论点是什么--加上「;是指;git config";指挥部?
我偶然发现了一个git命令:这个论点是什么--加上「;是指;git config";指挥部?,git,bash,terminal,git-bash,Git,Bash,Terminal,Git Bash,我偶然发现了一个git命令: git config --global --add merge.ff false 在合并分支时,默认情况下可能会禁用快速转发。但是,--add选项吸引了我的眼球,所以我现在想知道它到底做了什么。有人吗?正如,--add标志告诉git config不要覆盖任何现有的merge.ff设置,而是在任何现有设置之外添加一个新设置 由于merge.ff不是多值可配置的,因此这通常是错误的。(事实上,由于Git扫描配置文件的方式,新添加的设置会覆盖任何以前的设置,并且在最后添
git config --global --add merge.ff false
在合并分支时,默认情况下可能会禁用快速转发。但是,--add
选项吸引了我的眼球,所以我现在想知道它到底做了什么。有人吗?正如,--add
标志告诉git config
不要覆盖任何现有的merge.ff
设置,而是在任何现有设置之外添加一个新设置
由于merge.ff
不是多值可配置的,因此这通常是错误的。(事实上,由于Git扫描配置文件的方式,新添加的设置会覆盖任何以前的设置,并且在最后添加--add
,因此它仍然有效。)对于像merge.ff
这样的单值配置项,任何给定的配置文件中都应该只有一个条目
(例如,可以将其想象为,告诉Git不要做某事,然后告诉它做某事,然后告诉它不要做某事。在本例中,Git只是服从它听到的最后一个命令。)
多值配置项的一个示例是每个远程设备的fetch
行。例如,remote.origin.fetch
通常只是+refs/heads/*:refs/remotes/origin/*
,但您可以添加+refs/notes/*:refs/notes/*:refs/notes/origin/*
以从origin
复制注释。(您肯定不想删除第一个设置,只想添加第二个设置。)
(这不是bash特有的东西,而是Git特有的东西。bash只是使用指定的参数运行命令,并将这些参数的解释权留给命令。)来自:
--添加
在不更改任何现有值的情况下向选项添加新行。这与在--replace all中提供^$作为值_regex相同
对不起,还是莫名其妙。。。那么,
--add
标志是否意味着所有这些配置设置都将下降到所有git配置范围(全局、存储库、分支)?否。请尝试git config--global--add foo.bar,然后检查您的全局.gitconfig
(git config--global--edit
)。然后git config--global--add foo.bar second
,再次检查您的全局.gitconfig
。每个--add
将另一行放入文件中。如果不使用--add
,则该命令将替换现有设置,如果该文件中存在多个设置,则该命令将失败。顺便说一句,如果在--global
设置中将merge.ff
设置为false
,然后在--local
设置中将其设置为true
,局部值覆盖全局值。Git实际实现这一点的方式是,它首先扫描全局配置,然后扫描本地配置。累积的项(如remote.origin.fetch
)将从两个文件中获取值,但对于仅使用单个值的项(如merge.ff
),最后一个设置将覆盖。由于本地配置是最后读取的,因此任何设置都会覆盖全局配置。最后,请注意,当您运行git config--global--edit
时,您可以对git配置进行任何更改。我不确定Git是否允许在Windows系统上使用CR-LF结尾(我避免使用Windows以避免所有的加重);在类似Unix的机器上编辑配置文件效果很好,我更喜欢将此方法用于复杂的项目,如别名定义。谢谢,非常有用。知道了!干杯RTFM链接…谢谢,这对不太高级的用户来说有点不清楚