问题描述
我在手机上想通过SSH克隆我的仓库,但是需要登入到Github上才能获取到SSH链接,其他方式好像只能获取HTTPS链接.有时候登陆比较麻烦,所以我需要写点代码来实现HTTPS和SSH地址的相互转换。
实例
在下面输入框中输入地址
,然后点击转换
按钮即可转换HTTPS地址为SSH地址,或者转换SSH地址为HTTPS地址:
SSH链接格式
例如:
1
| git@github.com:lanlan2017/lanlan2017.github.io.git
|
Https格式
1
| https://远程仓库域名/用户名/仓库名.git
|
例如:
1
| https://github.com/lanlan2017/lanlan2017.github.io.git
|
转换规则
经过观察,我发现后面的用户名/仓库名.git
都是一样的,
- 在这部分前面加上
git@远程仓库域名:
就得到SSH地址,
- 在这部分前面加上
https://远程仓库域名/
就得到HTTPS地址.
SSH转HTTPS
匹配正则:
1
| ^git@(.+?):(.+?/.+?\.git)$
|
替换正则:
HTTPS转SSH
1
| ^https://(.+?)/(.+?/.+?\.git)$
|
替换正则:
源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <input type="text" id='input' placeholder="请输入HTTPS/SSH地址" size="40"/><button onclick='switchHttpsSsh()'>转换</button> <script> var input = document.getElementById('input'); function switchHttpsSsh(text) { if (text == null) { copy(switchHttpsSsh(input.value)); } else { var httpsRegex = /^https:\/\/(.+?)\/(.+?\/.+?\.git)$/; var sshRegex = /^git@(.+?):(.+?\/.+?\.git)$/; if (httpsRegex.test(text)) { text = text.replace(httpsRegex, "git@$1:$2"); } else if (sshRegex.test(text)) { text = text.replace(sshRegex, "https://$1/$2"); } input.value=text; return text; } } function copy(text) { var temp = document.createElement("textarea"); temp.value = text; document.body.appendChild(temp); temp.select(); document.execCommand('copy'); document.body.removeChild(temp); } </script>
|