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

+0

@bmalets См. Мое редактирование. – Jubobs

+0

Большое спасибо за вашу помощь! – bmalets