我正试图清理我的代码并消除错误。如果我跑:
git remote add godaddy $user1@foo.com:~/root.git
我得到了
fatal: remote godaddy already exists.
我知道它存在,但我只是想让它忽略它并再次创建它。
例如,您可以使用mkdir
-p
的错误
我在这里查了但找不到任何东西:
https://git-scm.com/docs/git-remote
这不是重复,因为我正在寻找一个命令行选项来抑制“错误”。
答案 0 :(得分:4)
你不能告诉Git压制错误,如果它已经存在你需要删除它并重新添加它,或更新它的URL。抑制mkdir
的错误是正常的,因为如果它存在则您不需要制作它。使用Git遥控器并不是真的,因为现有的遥控器可能有不同的URL,所以如果失败则忽略命令就不行。
假设这是您尝试更改的某个脚本(否则如果它是命令行上的手动过程然后忽略错误并继续使用更重要的内容),我可以看到两个简单的解决方案:
首先检查远程,然后根据需要更新或添加它:
if git remote | grep -w godaddy ; then
git remote set-url godaddy $user1@foo.com:root.git
else
git remote add godaddy $user1@foo.com:root.git
fi
只需尝试添加即可,如果失败则更新网址:
git remote add godaddy $user1@foo.com:root.git || git remote set-url godaddy $user1@foo.com:~/root.git
另一种选择是将stderr重定向到/dev/null
并使命令返回true,即使git
退出也会出错,但这可能不是一个好主意:
git remote add godaddy $user1@foo.com:root.git 2>/dev/null || true
答案 1 :(得分:2)
git remote add godaddy $user1@foo.com:~/root.git
执行此命令时,只需使用给定的URL更新.git/config
文件。在您的情况下,您的文件中已有此远程名称。
在这种情况下,您可以根据自己的需要进行以下操作之一吗?
# Add new (second) origin
git remote add godaddy1 $user1@foo.com:~/root.git
# replace the current origin
git remote set-url godaddy $user1@foo.com:~/root.git
# List all remotes
git remote -v
答案 2 :(得分:0)
Git包含将您的提交发送到不同遥控器的可能性。您可以更改这些遥控器,例如,如果主开发服务器发生更改。通常你设置一个遥控器,你不必再改变它。
如果要将清理后的代码发送到服务器,请务必
git commit -am "Cleaned the code up"
git push godaddy master
如果你是git的新手,你可能不需要git-remote
。
答案 3 :(得分:0)
这是一般解决方案:
function addGitRepos(){
local name1=godaddy
local url1=$user1@foo.com:root.git
if git remote | grep -w $name ; then
git remote set-url $name1 $url1
else
git remote add $name1 $url1
fi
}
稍后如果你需要更多的repos,你可以创建数组和循环来迭代它。
这只是一个起点。
答案 4 :(得分:0)
git remote remove godaddy 2>&-
git remote add godaddy $user1@foo.com:~/root.git
2>&-
与2>/dev/null
类似,但是对于在关闭的错误日志中表现良好的命令,它会更短,git会这样做。
此处的其他命令将保留您可能拥有的任何其他远程配置,可能不会出现问题,但是......