仅当 git remote 不存在时才添加

ext*_*ext 7 git

脚本是否有一种简单的方法来检测远程是否已存在并仅在不存在时才添加它?管道命令还是瓷旗?

git remote add foo https://example.net使用现有遥控器运行时,我得到:

fatal: remote foo already exists.
Run Code Online (Sandbox Code Playgroud)

理想情况下会有一个标志,例如--if-not-existsor--update-if-exists但我在文档中找不到任何标志。

我正在考虑 grepping 的输出,git remote但有更好的方法吗?

jth*_*ill 9

git config remote.foo.url >&- || git remote add foo
Run Code Online (Sandbox Code Playgroud)

git 是用来处理关闭的 fd 的,所以你不需要>/dev/null,只需关闭它,当你要求一个不存在的配置时,配置会设置一个返回码。

  • 一般来说,关闭文件描述符而不是重定向到 /dev/null 并不是一个好主意,因为毫无疑问,有些工具的退出状态会有所不同。(一个快速示例显示,(在我的盒子上)如果关闭 stdout,cat、less、sed 和 awk 都会失败,而 grep 和 git-config 不会注意到差异。)没有真正的理由选择关闭而不是重定向。 (2认同)