1. 程式人生 > 其它 >HG版本庫推送到Git伺服器相關筆記.md

HG版本庫推送到Git伺服器相關筆記.md

如何將HG版本庫推送到Git伺服器?

目的

習慣使用HG來進行版本管理,但是GitHub程式碼統計比Bitbucket要豐富,所以準備主力倉庫選用Bitbucket,GitHub作為備用倉庫.

GitHub本身不支援 HG 版本庫,所以需要用到HG-Git擴充套件外掛來實現轉義或翻譯Git型別的版本庫.

參考資料

  1. 9. Use with other VCS systems — TortoiseHg 3.8.0 documentation

  2. Hg-Git Mercurial Plugin - github

  3. durin42 / hg-git — Bitbucket

  4. Set up an SSH key - Atlassian Documentation

TortoiseHg 啟用 HG-Git 的方法

Windows 版本的 TortoiseHg 已經集成了 HG-Git 擴充套件外掛 (及其必備執行環境 Dulwich) ,因此只需要在 .hgrc 配置檔案裡設定一下即可啟動.

[extensions]
hggit =

填坑記錄

幾種 Git 倉庫地址的區別

  1. https://github.com/schacon/hg-git.git

    許可權支援:可讀 可寫.
    GitHub 內建的克隆方式.

    HG-Git 支援.

    使用此格式的地址克隆倉庫時會出錯提示:
    中止: No module named selectors!

  2. [email protected]:schacon/hg-git.git

    許可權支援:可讀 可寫.
    GitHub 內建的克隆方式. 需要 SSH key 和 passphrase.

    HG-Git 支援.

    使用此格式的地址克隆倉庫時會出錯提示:
    系統找不到指定的路徑。中止: git remote error: The remote server unexpectedly closed the connection.

  3. git://github.com/schacon/hg-git.git

    許可權支援:

    HG-Git 支援通過此格式 克隆倉庫 到本地.

    但是一旦推送本地修改到伺服器,就會報錯git remote error: You can't push to git://.git Use https://.git


    參考資料:

    1. fatal: remote error: You can't push to git (Example)
    2. Git Bash: remote error: You can't push to git://github.com/ - Stack Overflow
  4. git+ssh://[email protected]/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

       [email protected]:schacon/hg-git.git
    

    would read

       git+ssh://[email protected]/schacon/hg-git.git
    

    (Mind the switch from colon to slash after the host!)

    翻譯如下:

    假如需要克隆一個支援後續推送的倉庫,
    那麼就需要將 SSH URL 轉換為一種特定的協議字首(git+ssh://)的格式.

    例如原地址為
    [email protected]:schacon/hg-git.git

    需要轉換為
    git+ssh://[email protected]/schacon/hg-git.git

    注意原地址域名後面的冒號之後的部分需要特別留意.

如何推送修改到一個現成的 Git 倉庫?

  1. 得到目標 Git 倉庫的 SSH 地址

    例如:

    1. [email protected]:schacon/hg-git.git
    2. https://gitee.com/AsionTang/70.YeLauncherApp.git
  2. 將其轉換為特定的格式

    例如:

    1. git+ssh://[email protected]/schacon/hg-git.git

      1. 增加 git+ssh://字首
      2. :冒號修改為/符號.
    2. git+ssh://git@gitee.com/AsionTang/70.YeLauncherApp.git

      https://替換為git+ssh://git@

  3. 生成 SSH 私鑰公鑰

    線上的方式生成(不用安裝特殊軟體):

    1. Free Online Private and Public Key Generator
    2. Online RSA Key Generator
    3. ONLINE Generate ssh RSA key,public key,private key,generate ssh pair
    4. Online Generate SSH keys algorithm RSA,DSA,ECDSA

    通過軟體生成:

    1. TortoiseGit生成.PPK拓展名的金鑰 - CSDN部落格
    2. liunx----putty--ssh--ppk---密文自動登陸 - CSDN部落格
    3. How to use ssh-keygen to generate a new SSH key | SSH.COM
    4. Using PuTTYgen on Windows to generate SSH key pairs | SSH.COM
  4. 將公鑰新增到GitHub

  5. 將私鑰轉換為*.PPK格式

    1. Convert SSH private key with PuTTY keygen : Some tutorials and articles
    2. linux私鑰id_rsa轉換成ppk - CSDN部落格
    3. Site5 KnowledgeBase » SSH: Convert SSH Keys to PPK Format
    4. How to convert PuTTY's .ppk to SSH key
    5. Converting OpenSSH and PuTTY Style Keys
    6. Use SSH Keys with PuTTY on Windows | ProfitBricks DevOps Central
  6. 修改配置檔案

     [ui]
     username = AsionTang
     ssh = "D:\TortoisePlink.exe" -ssh -2 -C -i "D:\ye.github.ppk"
    
  7. 接受並快取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://[email protected]/schacon/hg-git.git 後解決此問題. 在域名前多了個使用者名稱 git@

作者:Asion Tang出處:http://asiontang.cnblogs.com凡是沒有註明[轉載]的文章,本Blog發表的文章版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。