习惯使用HG来进行版本管理,可是GitHub
代码统计比Bitbucket
要丰富,因此准备主力仓库选用Bitbucket
,GitHub
做为备用仓库. php
GitHub
自己不支持 HG 版本库,因此须要用到HG-Git
扩展插件来实现转义或翻译
成Git
类型的版本库.html
Windows 版本的 TortoiseHg 已经集成了 HG-Git 扩展插件 (及其必备运行环境 Dulwich
) ,所以只须要在 .hgrc
配置文件里设置一下便可启动.windows
[extensions] hggit =
https://github.com/schacon/hg-git.git
缓存
权限支持:可读 可写.
GitHub 内建的克隆方式.bash
HG-Git 不支持.服务器
使用此格式的地址克隆仓库时会出错提示:
停止: No module named selectors!
git@github.com:schacon/hg-git.git
权限支持:可读 可写.
GitHub 内建的克隆方式. 须要 SSH key 和 passphrase.
HG-Git 不支持.
使用此格式的地址克隆仓库时会出错提示:
系统找不到指定的路径。停止: git remote error: The remote server unexpectedly closed the connection.
git://github.com/schacon/hg-git.git
权限支持:只读
HG-Git 支持经过此格式 克隆仓库 到本地.
可是一旦推送本地修改到服务器,就会报错git remote error: You can't push to git://.git Use https://.git
参考资料:
git+ssh://git@github.com/schacon/hg-git.git
如下引用自:durin42 / hg-git - Usage — Bitbucket
If you want to clone a github repository for later pushing (or any other repository you access via ssh), you need to convert the ssh url to a format with an explicit protocol prefix.
For example, the git url with push access
git@github.com:schacon/hg-git.gitwould read
git+ssh://git@github.com/schacon/hg-git.git(Mind the switch from colon to slash after the host!)
翻译以下:
假如须要克隆一个支持后续推送的仓库,
那么就须要将 SSH URL 转换为一种特定的协议前缀(git+ssh://
)的格式.例如原地址为
git@github.com:schacon/hg-git.git
须要转换为
git+ssh://git@github.com/schacon/hg-git.git
注意原地址域名后面的冒号以后的部分须要特别留意.
获得目标 Git 仓库的 SSH 地址
例如: git@github.com:schacon/hg-git.git
将其转换为特定的格式
例如: git+ssh://git@github.com/schacon/hg-git.git
生成 SSH 私钥公钥
在线的方式生成(不用安装特殊软件):
经过软件生成:
将公钥添加到GitHub
将私钥转换为*.PPK格式
修改配置文件
[ui] username = AsionTang ssh = "D:\TortoisePlink.exe" -ssh -2 -C -i "D:\ye.github.ppk"
接受并缓存GitHub的Host Key
找到正确的 Git 仓库地址
例如 https://github.com/schacon/hg-git
将其修改成 git://github.com/schacon/hg-git.git
同样格式的地址,正常克隆便可.
Unable to use key file "id_ras" (OpenSSH SSH-2 private key (old PEM format))
将PEM私钥格式转换为*.PPK格式便可.
Server refused our key
将仓库地址从 git+ssh://github.com/schacon/hg-git.git
改成 git+ssh://git@github.com/schacon/hg-git.git
后解决此问题. 在域名前多了个用户名 git@