有,但通常比手动编辑要困难得多,如果您只想删除一个匹配的行。
修改 git 配置文件的命令是git config
. 它具有--unset
、--unset-all
和--remove-section
选项,用于删除某个特定部分或键中的一个、所有匹配或所有条目。
在这种情况下,该部分是remote.origin
(因为它在[remote "origin"]
文件中)并且键是remote.origin.fetch
. 在这种情况下,您不希望删除整个部分,以便留下--unset
和--unset-all
作为可能性。
可以有不止一条fetch
线,也可以不止一条push
线。换句话说,一个键可以有多个副本,具有不同的值。
如果只有remote.origin.fetch
一行,并且您想删除它,您可以简单地:
git config --unset remote.origin.fetch
如果您在具有多个fetch 行的存储库上尝试此操作,您会得到:
warning: remote.origin.fetch has multiple values
你会发现没有任何东西被删除(至少这是我用 git 2.1.0 得到的)。在这种情况下,您需要更复杂的变体,或者--unset-all
(删除所有remote.origin.fetch
键)或(删除值匹配的那些键)。--unset key value_regex
value_regex
由于您可能只想取消设置一个匹配行,因此您必须想出一个与该行匹配的正则表达式,并且只匹配该行。通读文档以提出合适的正则表达式;git config
请注意,由于这些是 POSIX“扩展”RE,裸+
字符表示“一个或多个前一个字符”,因此+refs/...
由于缺少“前一个字符”部分而不起作用。(根据文档,这些也显然是未锚定的。)在这种情况下,:refs/remotes/origin/foo/bar
可能就足够了,但你可以变得更好。
要删除该push
条目,请重复上述步骤,但使用remote.origin.push
as 键。
(或者只是使用您最喜欢的编辑器并交互删除正确的行,这会容易得多,尽管不太适合脚本......)