習慣使用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@