如何將HG版本庫推送到Git服務器?
目的
習慣使用HG來進行版本管理,但是GitHub
代碼統計比Bitbucket
要豐富,所以准備主力倉庫選用Bitbucket
,GitHub
作為備用倉庫.
GitHub
本身不支持 HG 版本庫,所以需要用到HG-Git
擴展插件來實現轉義或翻譯
成Git
類型的版本庫.
參考資料
TortoiseHg 啟用 HG-Git 的方法
Windows 版本的 TortoiseHg 已經集成了 HG-Git 擴展插件 (及其必備運行環境 Dulwich
) ,因此只需要在 .hgrc
配置文件里設置一下即可啟動.
[extensions]
hggit =
填坑記錄
幾種 Git 倉庫地址的區別
https://github.com/schacon/hg-git.git
權限支持:可讀 可寫.
GitHub 內建的克隆方式.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.git
would 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 倉庫?
得到目標 Git 倉庫的 SSH 地址
例如:
git@github.com:schacon/hg-git.git
將其轉換為特定的格式
例如:
git+ssh://git@github.com/schacon/hg-git.git
生成 SSH 私鑰公鑰
在線的方式生成(不用安裝特殊軟件):
- Free Online Private and Public Key Generator
- Online RSA Key Generator
- ONLINE Generate ssh RSA key,public key,private key,generate ssh pair
- Online Generate SSH keys algorithm RSA,DSA,ECDSA
通過軟件生成:
將公鑰添加到GitHub
將私鑰轉換為*.PPK格式
- Convert SSH private key with PuTTY keygen : Some tutorials and articles
- linux私鑰id_rsa轉換成ppk - CSDN博客
- Site5 KnowledgeBase » SSH: Convert SSH Keys to PPK Format
- How to convert PuTTY's .ppk to SSH key
- Converting OpenSSH and PuTTY Style Keys
- Use SSH Keys with PuTTY on Windows | ProfitBricks DevOps Central
修改配置文件
[ui] username = AsionTang ssh = "D:\TortoisePlink.exe" -ssh -2 -C -i "D:\ye.github.ppk"
接受並緩存GitHub的Host Key
如何克隆一個現成的 Git 倉庫到本地?
找到正確的 Git 倉庫地址
例如 https://github.com/schacon/hg-git
將其修改為 git://github.com/schacon/hg-git.git
一樣格式的地址,正常克隆即可.
SSH 連接時出現錯誤Unable to use key file "id_ras" (OpenSSH SSH-2 private key (old PEM format))
將PEM私鑰格式轉換為*.PPK格式即可.
SSH 連接時出現錯誤Server refused our key
將倉庫地址從 git+ssh://github.com/schacon/hg-git.git
改為 git+ssh://git@github.com/schacon/hg-git.git
后解決此問題. 在域名前多了個用戶名 git@
附件列表