Git远程没有被覆盖

时间:2017-03-23 11:06:32

标签: git jenkins ssh

我有一个Jenkins脚本,我将git存储库的来源改为使用HTTPS到SSH。

git remote set-url origin ssh://git@my-repo.com:7999/my-project.git

当我在本地运行时,原点设置正确:

origin  ssh://git@my-repo.com:7999/my-project.git (fetch)
origin  ssh://git@my-repo.com:7999/my-project.git (push)

但是,在Jenkins作业中,HTTPS密钥仍然存在:

origin  https://user:password@my-repo.com:7990 (fetch)
origin  https://user:password@my-repo.com:7990 (push)
origin  ssh://git@my-repo.com:7999/my-project.git (push)

知道在使用SSH密钥时如何强制删除HTTPS密钥?

修改

如果我之前运行git config --get-regexp 'remote\.origin\..*'

remote.origin.url https://user:password@my-repo:7990
remote.origin.url http://my-repo.com:7990/scm/my-project.git

如果我之后运行它:

remote.origin.url https://user:password@my-repo:7990
remote.origin.url ssh://git@my-repo.com:7999/my-project.git

1 个答案:

答案 0 :(得分:1)

啊,我们从git config --get-regexp输出中看到,实际上两个网址与[remote "origin"]相关联:有http://个网址,和https://网址。 (幸运的是没有remote.origin.pushurl设置,这会使这更加复杂。)

运行:

git remote set-url origin ssh://git@my-repo.com:7999/my-project.git

更改了两个网址中的一个,如下所示:

  

set-url

     
    更改遥控器的网址。设置匹配正则表达式<name> 的远程<oldurl>的第一个网址(如果没有给出<oldurl>,则为第一个网址)    <newurl>。如果<oldurl>与任何URL都不匹配,则会发生错误,并且不会更改任何内容。

(粗体我的)。

larks suggests使用git remote rm origin清除整个内容,然后添加一个新内容,(另一个注释)会产生错误:

fatal: remote origin already exists

这表明你的(虽然不是八角形, 1 也许Jenkins的)[remote "origin"]甚至--global Git配置中都有一个--system部分。这可能是由于设置额外的fetch指令以从GitHub获取拉取请求提交的常见黑客:请参阅https://gist.github.com/piscisaureus/3342247#gistcomment-430273,然后是TrevorBurnham的后续​​评论。

您仍然可以使用git remote set-url --delete origin <regexp-for-url> 删除额外的网址。选择仅匹配不需要的网址的正则表达式,例如https://(不清楚Git是否为我们锚定了这些正则表达式;如果不是,^https://稍微安全一点,尽管在https://中找到git config --get-regexp似乎不太可能中间

1 我们知道它不是你的,因为它是由--local命令打印的,我们没有限制import android.view.SurfaceHolder.Callback; 配置。