如果我执行git config foo.bar baz
,则会向foo
添加.git/config
部分:
...
[foo]
bar = baz
...
我可以使用git config --unset foo.bar
再次删除该设置,但该部分仍保留在文件中,其中没有任何内容:
...
[foo]
...
如果我使用foo
添加其他git config foo.bar baz
设置,则git-config
不会将其添加到空foo
部分;它开始了一个新的:
...
[foo]
[foo]
bar = baz
...
我的问题是:
答案 0 :(得分:4)
要回答第3点,您可以使用>>> [(yield(x)) for x in xlist]
<generator object <listcomp> at 0x00000076CC8E5DB0>
的结果来决定何时进行清理:
git config --get-regexp
答案 1 :(得分:3)
有git config --remove-section
所以你可以删除整个部分。但是,是的,对我来说,它看起来像一个错误,如果空存在,它会创建一个新的部分。
答案 2 :(得分:2)
从.git / config?
中删除设置时如何避免空白部分
应该用Gti 2.18(2018年第二季度)修复:
&#34; git config --unset a.b
&#34;,当&#34; a.b
&#34;是空白部分中的最后一个变量&#34; a
&#34;,留空部分&#34; a&#34;落后,更糟糕的是,随后的&#34; git config a.c value
&#34;没有重用那个
空壳,而是创建一个新的
这些已被(部分)纠正。
请参阅commit c71d8bb,commit 22aedfc,commit 6ae996f,commit 5221c31,commit 668b9ad,commit fee8572,commit 8032cc4,{{3} },commit b73bdc3(2018年4月9日),commit 422e8ef,commit dde154b,commit 85bf5d6,commit 46fc89c,commit e931395,commit efbaca1( 2018年4月3日)commit 83b7fd8
(由Johannes Schindelin (dscho
)合并于Junio C Hamano -- gitster
--,2018年5月8日)
git config --unset:删除空部分(在常见情况下)
删除时不删除节标题的原始推理 最后一个条目是这样的:用户可以添加评论 该部分,或关于其中的条目,如果还有其他 在那里评论,我们不知道是否应该删除它们。
特别是,提出了一个看起来像这样的炮制的例子 (并被添加到t1300):
# some generic comment on the configuration file itself
# a comment specific to this "section" section.
[section]
# some intervening lines
# that should also be dropped
key = value
# please be careful when you update the above variable
在这种情况下,
git config --unset section.key
的理想选择是 只留下第一行,因为所有其他评论 现在已经过时了。但是,如果不添加完整的自然语言,这是不可行的 处理模块给Git,这似乎不仅工作很多,而且很多 完全不合理的功能(对大多数用户来说没什么好处)。
现在,关于这个问题的真正的关键是:大多数用户不编辑他们的 完全配置文件!在他们的用例中,配置看起来像这样 代替:
[section]
key = value
......如果删除条目,应该会发生什么是完全明显的:整个部分应该消失。
答案 3 :(得分:1)
Thomas Rast引起了我的注意this thread on the git developer mailing list。
根据我对Peff在那里的描述的理解,如果配置解析器的编程不那么特别,那么问题就很容易解决。解析文件后,结果是包含配置设置的结构,但不包含文件的原始结构。由于有关节结构的信息不适用于呼叫者,因此设置插入代码无法知道是否存在具有正确标题的空节。删除空部分也有点棘手,因为它们可能包含重要的注释,这些注释应该 not 自动删除,因为该部分的最后一个功能部分已被删除。
结论是:
这种编程很乏味但很简单,所以我会看看是否可以编写补丁。