如何在一个命令中创建或更新遥控器?

How can I, in one command, create or update a remote?

我不知道名为 origin 的遥控器是否已经存在。命令

git remote add origin gti@gtihub......git

抛出错误

fatal: remote origin already exists

我需要添加一个 origin 遥控器,如果它不存在,如果它已经存在则更新它。我怎样才能在一条命令中做到这一点?

(供参考,我使用Git版本1.7.3.4。)

还有,有什么区别:

这些命令中的任何一个都能满足我的要求吗?

[...] what is the difference between [...]

git remote add <name> <url>

为位于 <url> 的存储库添加一个名为 <name> 的远程。

git remote set-url <name> <url>

将名为 <name> 的遥控器的 URL 设置为 <url>

git remote set-url --add <name> <url>

为名为 <name> 的遥控器添加一个新的(推送)URL;那可能不是你想要做的。

如果名为 <name> 的遥控器已经存在,则第一个命令将抛出错误,而如果不存在名为 <name> 的遥控器,则最后两个命令将抛出错误。

参考git-remote man page了解更多详情。

I need to add remote origin when it does not exists, and update it if it already exists.

您可以为此使用条件执行:

git remote add <name> <url> >/dev/null 2>&1 || git remote set-url <name> <url>

如果第一个命令 (git remote add ...) returns 具有非零退出代码,则第二个命令 (git remote set-url ...) 只会 运行。

>/dev/null 2>&1部分用于将第一个命令的标准输出和标准错误重定向到/dev/null,你可以认为是UNIX的"bottomless pit"; here 是对输出重定向的介绍。

为方便起见,您可能需要为此定义一个别名。