有没有办法强制创建远程存储库?

时间:2016-03-19 21:01:32

标签: git bash

我正试图清理我的代码并消除错误。如果我跑:

git remote add godaddy $user1@foo.com:~/root.git

我得到了

fatal: remote godaddy already exists.

我知道它存在,但我只是想让它忽略它并再次创建它。

例如,您可以使用mkdir

取消-p的错误

我在这里查了但找不到任何东西:

https://git-scm.com/docs/git-remote

这不是重复,因为我正在寻找一个命令行选项来抑制“错误”。

5 个答案:

答案 0 :(得分:4)

你不能告诉Git压制错误,如果它已经存在你需要删除它并重新添加它,或更新它的URL。抑制mkdir的错误是正常的,因为如果它存在则您不需要制作它。使用Git遥控器并不是真的,因为现有的遥控器可能有不同的URL,所以如果失败则忽略命令就不行。

假设这是您尝试更改的某个脚本(否则如果它是命令行上的手动过程然后忽略错误并继续使用更重要的内容),我可以看到两个简单的解决方案:

  1. 首先检查远程,然后根据需要更新或添加它:

    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

  2. 只需尝试添加即可,如果失败则更新网址:

    git remote add godaddy $user1@foo.com:root.git || git remote set-url godaddy $user1@foo.com:~/root.git

  3. 另一种选择是将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 

远程set-url

# replace the current origin
git remote set-url godaddy $user1@foo.com:~/root.git

列出所有遥控器

# List all remotes
git remote -v

答案 2 :(得分:0)

Git包含将您的提交发送到不同遥控器的可能性。您可以更改这些遥控器,例如,如果主开发服务器发生更改。通常你设置一个遥控器,你不必再改变它。

如果要将清理后的代码发送到服务器,请务必

  1. 提交代码git commit -am "Cleaned the code up"
  2. 将更改推送到服务器git push godaddy master
  3. 如果你是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会这样做。

此处的其他命令将保留您可能拥有的任何其他远程配置,可能不会出现问题,但是......