2015-04-01 47 views
1

我不知道名为origin的远程设备是否已经存在。该命令如何在一个命令中创建或更新远程?

git remote add origin [email protected] 

引发错误

fatal: remote origin already exists 

我需要添加一个origin远程如果不存在的话,和更新它,如果它已经存在。我怎么能在一个命令中做到这一点?

(有关信息,我使用的Git版本1.7.3.4)

此外,之间有什么区别:

这些命令中的任何一个都可以做我想要的吗?

回答

1

[...]之间有什么区别[...]

git remote add <name> <url> 

增加了远程命名<name><url>库。

git remote set-url <name> <url> 

设置URL远程叫<name><url>

为远程设备添加了一个新的(推送)URL,名为<name>;这可能不是你想要做的。

如果已存在称为<name>的远程,则第一个命令会引发错误,而如果不存在称为<name>的远程,则最后两个命令会引发错误。

有关更多详细信息,请参阅git-remote man page

我需要添加远程原点,当它不存在时更新它,如果它已经存在。

可以使用条件执行该:

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

第二个命令(git remote set-url ...)如果所述第一个(git remote add ...)以非零退出代码返回将仅运行。

>/dev/null 2>&1部分用于将第一个命令的标准输出和标准错误重定向到/dev/null,您可以将其视为UNIX的“无底坑”; here是对输出重定向的介绍。

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

+0

上次命令中的“/ dev/null”是什么意思?其实“2>&1”? – bmalets 2015-04-01 16:47:59

+0

@bmalets看我的编辑。 – Jubobs 2015-04-01 16:52:33

+0

非常感谢您的帮助! – bmalets 2015-04-01 17:31:23

相关问题