我需要一个脚本来确保文件中包含以下内容.gitconfig:
[url "git@<IP addr>:"]
insteadOf = https://<IP addr>/
insteadOf = https://<domain name>/
insteadOf = git@<domain name>:
Run Code Online (Sandbox Code Playgroud)
这是为了确保用户始终使用 SSH 进行克隆,并使用 IP 地址而不是 HTTP 地址(以 IP 或域形式),并且使用域名而不是 ssh。
但是,使用以下代码:
git config --global url.git@<IP addr>:.insteadOf https://<IP addr>/ --replace-all
git config --global url.git@<IP addr>:.insteadOf https://<domain name>/ --add
git config --global url.git@<IP addr>:.insteadOf git@<domain name>: --add
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是一旦脚本再次运行,它会重新打印 .gitconfig 文件中的行,随着时间的推移,这将使文件太大并且 git 速度太慢。我已经尝试了所有标志组合--replace-all --add等等。他们要么堆积文件,要么发出警告,由于项目要求,我也无法容忍。
是否有任何语法可以一次添加三行并且如果它们已经存在则不执行任何操作?
在我看来,这就像混合选项和参数样式的选项解析中的错误,
git config --global --replace-all url.git@<IP addr>:.insteadOf https://<IP addr>/
git config --global --add url.git@<IP addr>:.insteadOf https://<domain name>/
git config --global --add url.git@<IP addr>:.insteadOf git@<domain name>:
Run Code Online (Sandbox Code Playgroud)
作品。