web-dev-qa-db-ja.com

Google ColabでGitを使用する方法

Gitとcolabを統合するための推奨される方法はありますか?

たとえば、Googleソースリポジトリやいいね!のコードを削除することは可能ですか?

Git機能には、Googleドライブもクラウドストレージも使用できません。

だから私はまだそれを行う方法があるのだろうかと思っていましたか?

36
Prashanth

gitがマシンにインストールされており、!を使用してシェルコマンドを呼び出すことができます。

たとえば、gitリポジトリを複製するには:

!git clone https://github.com/fastai/courses.git

これは、リポジトリを複製し、そこに保存されているExcelファイルをロードする完全な例です。 https://colab.research.google.com/notebook#fileId=1v-yZk-W4YXOxLTLi7bekDw2ZWZXWW216

25
Bob Smith

プライベートリポジトリのクローンを作成する場合、最も簡単な方法は次のとおりです。

!git clone https://username:[email protected]/username/repository.git

19

アカウントのユーザー名とパスワードを保護するには、getPassを使用して、シェルコマンドでそれらを連結します。

from getpass import getpass
import os

user = getpass('BitBucket user')
password = getpass('BitBucket password')
os.environ['BITBUCKET_AUTH'] = user + ':' + password

!git clone https://[email protected]/{user}/repository.git
9
Marafon Thiago

Sshプロトコルを使用して、プライベートリポジトリをcolabに接続できます。

  1. ローカルマシンでsshキーペアを生成し、保持することを忘れないでください
    言い換えは空です。これを確認してください チュートリアル

  2. それをcolabにアップロードし、以下を確認してください screenshot

    from google.colab import files
    uploaded = files.upload()

  3. Ssh kayペアを/ rootに移動し、gitに接続します

    • 以前にsshファイルを削除します
      ! rm -rf /root/.ssh/*
      ! mkdir /root/.ssh
    • sshファイルを解凍します
      ! tar -xvzf ssh.tar.gz
    • ルートにコピーします
      ! cp ssh/* /root/.ssh && rm -rf ssh && rm -rf ssh.tar.gz! chmod 700 /root/.ssh
    • gitサーバー、たとえばgitlabをssh既知のホストとして追加します
      ! ssh-keyscan gitlab.com >> /root/.ssh/known_hosts
      ! chmod 644 /root/.ssh/known_hosts
    • gitアカウントを設定します
      ! git config --global user.email "email"
      ! git config --global user.name "username"
    • 最後にgitサーバーに接続します
      ! ssh [email protected]
  4. プライベートリポジトリを認証します。これを確認してください リポジトリごとのデプロイキー

  5. ! [email protected]:{account}/{projectName}.gitを使用
    注:プッシュを使用するには、書き込みアクセス権を付与する必要があります
    gitサーバーの認証に使用する公開sshキー。

6
Fadi Bakoura

ほとんどこのリンクを使用できます: https://qiita.com/Rowing0914/items/51a770925653c7c528f9

上記のリンクの要約として、次の手順を実行する必要があります。

1-次のコマンドを使用して、Google ColabランタイムをGoogleドライブに接続します。

from google.colab import drive
drive.mount('/content/drive')

認証プロセスが必要です。必要なことは何でもします。

2-current directoryにGitプロジェクトのクローンを作成するパスを設定します。

私の例では:

path_clone = "drive/My Drive/projects"
!cd path_clone

cdコマンドの先頭で!を使用することを忘れないでください。

3-Gitプロジェクトのクローンを作成します。

!git clone <Git project URL address>

これで、クローンされたGitプロジェクトがGoogleドライブのprojectsフォルダーにあります(これもGoogle Colabランタイムマシンに接続されています

4-(ブラウザーなどを使用して)Googleドライブに移動し、「プロジェクト」フォルダーに移動して.ipynbファイルを開きますGoogle Colabで使用したい。

5-これで、使用したい.ipynbを含むGoogle Colabランタイムが得られましたこれもGoogleドライブに接続されていますクローンされたすべてのgitファイルはColabランタイムのストレージにあります。

注:

1- ColabランタイムがGoogleドライブに接続されていることを確認します。接続されていない場合は、上記の手順#1を繰り返します。

2-「pwd」および「cd」コマンドを使用して、current directoryがgoogleドライブのクローンgitプロジェクトに関連していることを再確認します(上記の手順2)

4
Sharifirad

Gitを使用してcolabをgithubまたはgitlabと同期する3つの手順。

  1. 秘密鍵と公開鍵のペアを生成します。手順2で使用するために、秘密キーをシステムクリボードにコピーします。必要に応じて、公開キーをgithubまたはgitlabに貼り付けます。

    Linuxでは、ssh-keygenを使用して〜/ .sshにキーペアを生成できます。結果の秘密鍵はid_rsaファイルにあり、公開鍵はid_rsa.pubファイルにあります。

  2. Colabで、実行

    key = \
    '''
    paste the private key here
    '''
    ! 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 github.com >> /root/.ssh/known_hosts 
    
  3. 通常どおりgitを使用してプル/プッシュします。

同じ考えを、rsync bewteen colabとHostAに若干の変更を加えて使用できます。

  1. 秘密鍵と公開鍵のペアを生成します。手順2で使用するために、秘密キーをシステムクリボードにコピーします。公開キーをHostAの.sshのauthorized_keysに貼り付けます。
  2. Colabで、実行

    key = \
    '''
    paste the private key here
    '''
    ! 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 -oStrictHostKeyChecking=no root@HostA hostnam  # ssh-keyscan 
    

HostA >> /root/.ssh/known_hostsはIPでは機能しないようです。

  1. Rsyncを使用して、通常どおりcolabとHostAの間でファイルを同期します。
1
cong yu

これは、レポとコラボを共有する場合に機能します。複数のリポジトリがある場合にも機能します。セルに入れてください。

import ipywidgets as widgets
from IPython.display import display
import subprocess

class credentials_input():
    def __init__(self, repo_name):
        self.repo_name = repo_name
        self.username = widgets.Text(description='Username', value='')
        self.pwd = widgets.Password(description = 'Password', placeholder='password here')

        self.username.on_submit(self.handle_submit_username)
        self.pwd.on_submit(self.handle_submit_pwd)        
        display(self.username)

    def handle_submit_username(self, text):
        display(self.pwd)
        return

    def handle_submit_pwd(self, text):
        cmd = f'git clone https://{self.username.value}:{self.pwd.value}@{self.repo_name}'
        process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
        output, error = process.communicate()
        print(output, error)
        self.username.value, self.pwd.value = '', ''

get_creds = credentials_input('github.com/username/reponame.git')
get_creds
0
Jaden Travnik

次を使用してドライブをマウントします。

from google.colab import drive
drive.mount('/content/drive/')

次に:

%cd /content/drive/

ドライブのレポを複製するには

!git clone <github repo url> 

リポジトリから他のファイルにアクセスします(例:helper.pyはリポジトリ内の別のファイルです):

import imp 
helper = imp.new_module('helper')
exec(open("drive/path/to/helper.py").read(), helper.__dict__)
0
Ish

プライベートgithub Googleのレポジトリcolabを複製する非常にシンプルで簡単な方法は次のとおりです。

  1. パスワードは公開されません
  2. パスワードには特殊文字も含まれていますが、機能します
  3. Colabセルで以下のスニペットを実行するだけで、インタラクティブな方法で実行されます
import os
from getpass import getpass
import urllib

user = input('User name: ')
password = getpass('Password: ')
password = urllib.parse.quote(password) # your password is converted into url format
repo_name = input('Repo name: ')

cmd_string = 'https://{0}:{1}@github.com/{0}/{2}.git'.format(user, password, repo_name)

os.system(cmd_string)
cmd_string, password = "", "" # removing the password from the variable
0