【问题标题】:Is there a way to force the creation of a remote repository?有没有办法强制创建远程存储库?
【发布时间】:2016-07-06 13:10:23
【问题描述】:

我只是想清理我的代码并消除错误。如果我跑:

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

我明白了

fatal: remote godaddy already exists.

我知道它存在,但我只是希望它忽略它并重新创建它。

例如,您可以使用 -p 抑制 mkdir 的错误

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

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

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

【问题讨论】:

标签: git bash


【解决方案1】:
git remote remove godaddy 2>&-
git remote add godaddy $user1@foo.com:~/root.git

2>&-2>/dev/null 类似,但对于在关闭错误日志时表现良好的命令,键入的时间会更短,而 git 就是这样做的。

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

【讨论】:

  • 我看到了 2>/dev/null 一堆,这基本上是把错误流发送到外层空间吧?
【解决方案2】:

这是一个通用的解决方案:

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
}

稍后如果您需要更多存储库,您可以创建数组和循环来遍历它。

这只是一个起点。

【讨论】:

    【解决方案3】:

    你不能告诉 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. 尝试添加它,如果失败则更新 URL:

      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
    

    【讨论】:

      【解决方案4】:

      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 
      

      远程设置-url

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

      列出所有遥控器

      # List all remotes
      git remote -v
      

      【讨论】:

        【解决方案5】:

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

        如果您想将清理后的代码发送到服务器,请确保

        1. 提交代码git commit -am "Cleaned the code up"
        2. 将更改推送到服务器git push godaddy master

        如果您是 git 新手,您可能不需要git-remote

        【讨论】:

          猜你喜欢
          • 2013-01-05
          • 1970-01-01
          • 2016-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-07
          • 2020-05-17
          相关资源
          最近更新 更多