Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个论点是什么--加上「;是指;git config";指挥部?_Git_Bash_Terminal_Git Bash - Fatal编程技术网

这个论点是什么--加上「;是指;git config";指挥部?

这个论点是什么--加上「;是指;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命令:

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链接…谢谢,这对不太高级的用户来说有点不清楚