2015-04-01 62 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