每次设置首选项时,.gitconfig 部分都会重复
.gitconfig section duplicates everytime I set a preference
我的 .gitconfig
文件中有这个别名:
setmeld = config --global diff.external git-meld
nomeld = config --global --unset diff.external
这样我就可以设置和取消设置视觉差异工具融合。
当我发出:
git setmeld
...以下内容已添加到我的 .gitconfig 文件中:
[diff]
external = git-meld
当我发出:
git setmeld
...external = git-meld
设置已从我的 .gitconfig
文件中删除,但 [diff]
部分 header 保留。
如果我稍后 运行 git setmeld
我的 .gitconfig
最终有两个 [diff]
部分 headers:
[差异]
[差异]
外部 = git-meld
如果我取消设置然后再次设置外部 git-meld diff 工具,我会得到这样的结果:
[diff]
[diff]
[diff]
external = git-meld
问题不是因为别名。如果我自己发出命令 git config --global diff.external git-meld
和 config --global --unset diff.external
.
也会发生同样的情况
- 我可以避免这种奇怪的行为吗?
OS: Ubuntu 12.04.5 LTS
git 版本: 1.7.9.5
git 不喜欢空白部分。
使用命令
git config diff.dummy "dummy line"
您可以编辑配置以删除多余的 [diff] 行,但请注意先将配置文件保存到 config.save。如果git发现配置文件损坏,它将拒绝进一步的命令。
那么set unset cycles就不会再增加重复section
您的 Git 非常旧(当前版本为 2.8+),您可能应该更新您的。该错误可能会在较新的版本中得到修复(我没有检查过)。
与此同时,这似乎是一个无害的错误:Git 将 header 部分保留在原位,即使整个部分都是空的,然后添加另一个部分 header 甚至尽管已经存在一个部分 header。但是,考虑到 Git 扫描文件的方式,您可以根据需要多次重复 header 部分(和设置)。对于非累积的设置,1最后的设置会覆盖之前的设置。
作为一个相当棘手的解决方法,您可以设置其他内容,使该部分永远不会完全为空。任何值都可以:任何 Git 从未使用过的东西都将闲置,保留 not-empty.
部分
实际上您可能还想设置另一个 diff
设置,不过:diff.renameLimit
为大多数 [=12] 设置 rename-detection queue 的默认大小=] 操作。在某些版本中,"default default" 是 500、1000 和 2000(它一直在随着时间的推移而增长)。从最近即将推出的 Git 开始,新的默认值为 0,这意味着 "unlimited"(实际上意味着 "use internal maximum")。我从很早的时候就把我的设为 0。
1累积设置的一个示例是 remote.origin.fetch
的值,假设您有一个 [remote "origin"]
部分。此部分中的每个 fetch = ...
值都是累积的,当 运行 git fetch origin
、Git 通过所有映射运行从该远程获取的每个引用以查找其本地名称。如果映射产生多个名称,Git 会报错。 (通常反正只有一种设置,所以只有一种可能的输出。)
我的 .gitconfig
文件中有这个别名:
setmeld = config --global diff.external git-meld
nomeld = config --global --unset diff.external
这样我就可以设置和取消设置视觉差异工具融合。
当我发出:
git setmeld
...以下内容已添加到我的 .gitconfig 文件中:
[diff]
external = git-meld
当我发出:
git setmeld
...external = git-meld
设置已从我的 .gitconfig
文件中删除,但 [diff]
部分 header 保留。
如果我稍后 运行 git setmeld
我的 .gitconfig
最终有两个 [diff]
部分 headers:
[差异] [差异] 外部 = git-meld
如果我取消设置然后再次设置外部 git-meld diff 工具,我会得到这样的结果:
[diff]
[diff]
[diff]
external = git-meld
问题不是因为别名。如果我自己发出命令 git config --global diff.external git-meld
和 config --global --unset diff.external
.
- 我可以避免这种奇怪的行为吗?
OS: Ubuntu 12.04.5 LTS
git 版本: 1.7.9.5
git 不喜欢空白部分。
使用命令
git config diff.dummy "dummy line"
您可以编辑配置以删除多余的 [diff] 行,但请注意先将配置文件保存到 config.save。如果git发现配置文件损坏,它将拒绝进一步的命令。
那么set unset cycles就不会再增加重复section
您的 Git 非常旧(当前版本为 2.8+),您可能应该更新您的。该错误可能会在较新的版本中得到修复(我没有检查过)。
与此同时,这似乎是一个无害的错误:Git 将 header 部分保留在原位,即使整个部分都是空的,然后添加另一个部分 header 甚至尽管已经存在一个部分 header。但是,考虑到 Git 扫描文件的方式,您可以根据需要多次重复 header 部分(和设置)。对于非累积的设置,1最后的设置会覆盖之前的设置。
作为一个相当棘手的解决方法,您可以设置其他内容,使该部分永远不会完全为空。任何值都可以:任何 Git 从未使用过的东西都将闲置,保留 not-empty.
部分实际上您可能还想设置另一个 diff
设置,不过:diff.renameLimit
为大多数 [=12] 设置 rename-detection queue 的默认大小=] 操作。在某些版本中,"default default" 是 500、1000 和 2000(它一直在随着时间的推移而增长)。从最近即将推出的 Git 开始,新的默认值为 0,这意味着 "unlimited"(实际上意味着 "use internal maximum")。我从很早的时候就把我的设为 0。
1累积设置的一个示例是 remote.origin.fetch
的值,假设您有一个 [remote "origin"]
部分。此部分中的每个 fetch = ...
值都是累积的,当 运行 git fetch origin
、Git 通过所有映射运行从该远程获取的每个引用以查找其本地名称。如果映射产生多个名称,Git 会报错。 (通常反正只有一种设置,所以只有一种可能的输出。)