用 git 同步 Colab 與 Gitlab、Github 之間的文件


Colab 是谷歌提供的免費 Jupyter 服務,可使用 GPU。但由於每次的 VM (虛擬機)登出后所有文件都會連同VM被毀掉。如何將一個項目里的程序或數據同步到 Colab則往往比較麻煩。盡管谷歌盤也可以掛到 Colab 里用,但步驟也比較麻煩,另外 github 或 gitlab 的項目和谷歌盤的同步也並不直接。因而能直接將Colab 的 VM 與 github 或 gitlab 同步就可以節省時間。而且,程序在 Colab 上運行完后的結果也可以在VM消失前及時同步到github 或 gitlab 上保存。

用 git 同步Colab 與 gitlab、github 之間的文件共三步。

  • 生成 ssh 私鑰-公鑰對,將公鑰添加到 gitlab 或 github 戶頭,私鑰拷到系統剪貼板里備用。
    linux里可以用 ssh-keygen, Win里可以用 puttygen,github、gitlab 也可以生成私鑰-公鑰對。
    Linux 里的私鑰-公鑰對在 .ssh 里,私鑰文件是 id_rsa, 公鑰是 id_rsa.pub
    (github 戶頭添加公鑰參考文檔鏈接,gitlab戶頭添加公鑰參考文檔鏈接
  • 在colab里的 jupyter 里運行
    key = \
    '''
    私鑰拷到這里
    '''
    ! mkdir -p /root/.ssh
    with open(r'/root/.ssh/id_rsa', 'w', encoding='utf8') as fh:
        fh.write(key)
    ! chmod 600 /root/.ssh/id_rsa
    ! ssh-keyscan gitlab.com >> /root/.ssh/known_hosts  # 這一步是將 gitlab.com 的指紋寫到 .ssh/known_hosts 里,避免第一次運行時的yes/no交互
  • 然后就可以按正常 git 管理運作了:
    ! git ... 
    • 例:colab 同步 github
    1. 全局設置
      !git config --global user.email "addy@xyz.com"
      !git config --global user.name "your_name"
    2. 測試
      !ssh -T -o StrictHostKeyChecking=no git@github.com
      如果輸出含‘ Hi abc! You've successfully authenticated, but GitHub does not provide shell access.’ 則說明設置正確
      可以從github pull、push了。要注意 id_rsa 的 mod后6位必須為零(上面的
      ! chmod 600 /root/.ssh/id_rsa的目的)。
      設置不正確時,可以加 -v 或 -vv 看詳情,例如:
      !ssh -vT -o StrictHostKeyChecking=no git@github.com

同樣的思想可用於 rsync 同步 colab 和本機的文件。親測可用。

    • !git config --global user.email "addy@xyz.com"
      !git config --global user.name "your_name"
    •  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM