El control remoto de Git no se anuló

Tengo un script de Jenkins donde estoy cambiando el origen de mi repository de git desde HTTPS a SSH.

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

Cuando ejecuto esto localmente, el origen está configurado correctamente:

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

Sin embargo, en el trabajo de Jenkins, la key HTTPS sigue siendo así:

 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) 

¿Alguna idea de cómo forzar la eliminación de la key HTTPS al usar el SSH?

EDITAR

Si ejecuto git config --get-regexp 'remote\.origin\..*' antes de:

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

Si lo ejecuto después:

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

Ah, entonces, vemos en el resultado de git config --get-regexp que en realidad hay dos URL asociadas con [remote "origin"] : hay una URL http:// y una URL https:// . (Afortunadamente no existe una configuration remote.origin.pushurl , lo que complicaría aún más esto).

Corriendo:

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

cambia una de las dos URL, según lo documentado:

set-url

    Cambia las URL para el control remoto. Establece la primera URL para <name> remoto que coincide con regex <oldurl> (primera URL si no se proporciona &ltoldurl> ) a &ltnewurl> . Si <oldurl> no coincide con ninguna URL, se produce un error y no se cambia nada.

(en negrita mía).

Alondras sugiere usar git remote rm origin para limpiar todo, y luego agregar uno nuevo, que (por otro comentario) produce un error:

 fatal: remote origin already exists 

lo que sugiere que hay una sección [remote "origin"] en tu configuration (aunque no octavana, 1 quizás Jenkins) – --global o incluso --system Git del sistema. Esto podría deberse al truco común de establecer una directiva extra fetch para recoger confirmaciones de requestes de extracción de GitHub: ver https://gist.github.com/piscisaureus/3342247#gistcomment-430273 y luego el comentario de seguimiento de TrevorBurnham.

Aún puede usar git remote set-url --delete origin <regexp-for-url> para eliminar la URL adicional. Elija una expresión regular que coincida solo con URL no deseadas, por ejemplo, https:// (no está claro si Git ancla estas expresiones regulares para nosotros; si no, ^https:// es un poco más seguro, aunque encuentra https:// en el medio de una URL parece improbable).


1 Sabemos que no es tuyo, ya que habría sido impreso por el command git config --get-regexp , que no limitamos a la configuration --local .