我有一个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
答案 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;
配置。