Gibt es empfohlene Methoden, um Git in Colab zu integrieren?
Ist es beispielsweise möglich, Code aus Google-Quellrepositorys oder Ähnlichem zu verarbeiten?
Weder Google Drive noch Cloud-Speicher können für die Git-Funktionalität verwendet werden.
Also habe ich mich gefragt, ob es noch einen Weg gibt, das zu tun?
git
google-colaboratory
colab
Prashanth
quelle
quelle
! git clone https://[email protected]/username/repository.git
.Wenn Sie ein privates Repository klonen möchten, ist der schnellste Weg:
!git clone https://username:[email protected]/username/repository.git
quelle
u = 'user0'; p = 'pass0'; !git clone https://$u:[email protected]/$u/repository.git
Das sollte funktionieren,{p} {u}
auch funktionieren. (! ... sollte aber eine neue Zeile beginnen.)@
Ihr Passwort eingegeben haben, ersetzen Sie es durch%40
.Die sehr einfache und einfache Möglichkeit, Ihr privates Github- Repo in Google Colab zu klonen, ist wie folgt .
quelle
Um den Benutzernamen und das Kennwort Ihres Kontos zu schützen, können Sie
getPass
diese im Shell-Befehl verwenden und verketten:quelle
{user}
, die nicht in den tatsächlichen Benutzernamen übersetzt wird.Sie können das ssh-Protokoll verwenden, um Ihr privates Repository mit colab zu verbinden
Generieren Sie SSH-Schlüsselpaare auf Ihrem lokalen Computer. Vergessen Sie nicht,
die Paraphrase leer zu lassen. Lesen Sie dieses Tutorial .
Laden Sie es in colab hoch und überprüfen Sie den folgenden Screenshot
from google.colab import files
uploaded = files.upload()
Verschiebe die ssh kay Paare nach / root und verbinde dich mit git
! rm -rf /root/.ssh/*
! mkdir /root/.ssh
! tar -xvzf ssh.tar.gz
! cp ssh/* /root/.ssh && rm -rf ssh && rm -rf ssh.tar.gz
! chmod 700 /root/.ssh
! ssh-keyscan gitlab.com >> /root/.ssh/known_hosts
! chmod 644 /root/.ssh/known_hosts
! git config --global user.email "email"
! git config --global user.name "username"
! ssh [email protected]
Authentifizieren Sie Ihr privates Repository. Überprüfen Sie diese Bereitstellungsschlüssel pro Repository .
Verwendung
! [email protected]:{account}/{projectName}.git
Hinweis: Um die Verwendung Push, müssen Sie den Schreibzugriff geben
die öffentlichen SSH - Schlüssel , dass Sie mit git - Server authentifizieren.
quelle
Sie können diesen Link fast verwenden: https://qiita.com/Rowing0914/items/51a770925653c7c528f9
Als Zusammenfassung des obigen Links sollten Sie folgende Schritte ausführen:
1- Verbinden Sie Ihre Google Colab-Laufzeit mit den folgenden Befehlen mit Ihrem Google Drive:
Es würde einen Authentifizierungsprozess benötigen. Mach was immer es braucht.
2- Legen Sie dort
current directory
den Pfad fest, zu dem Sie das Git-Projekt klonen möchten:in meinem Beispiel:
Vergessen Sie nicht, zu
!
Beginn descd
Befehls zu verwenden.3- Klonen Sie das Git-Projekt:
Jetzt haben Sie das geklonte Git-Projekt in einem
projects
Ordner in Ihrem Google Drive ( der auch mit Ihrem Google Colab-Laufzeitcomputer verbunden ist ).4- Gehen Sie zu Ihrem Google Drive (mit Browser oder usw.) und gehen Sie dann zum Ordner "Projekte" und öffnen Sie den
.ipynb
Datei, die Sie in Google Colab verwenden möchten.5- Jetzt haben Sie die Google Colab-Laufzeit mit der
.ipynb
gewünschten, die auch mit Ihrem Google Drive verbunden ist, und alle geklonten Git-Dateien befinden sich im Speicher der Colab-Laufzeit.Hinweis:
1- Überprüfen Sie, ob Ihre Colab-Laufzeit mit Google Drive verbunden ist. Wenn keine Verbindung besteht, wiederholen Sie einfach den obigen Schritt 1 .
2- Überprüfen Sie mit den Befehlen "pwd" und "cd", ob das
current directory
mit dem geklonten Git-Projekt in Google Drive zusammenhängt (Schritt 2 oben) .quelle
Drei Schritte, um mit git colab mit github oder gitlab zu synchronisieren.
Generieren Sie ein privat-öffentliches Schlüsselpaar. Kopieren Sie den privaten Schlüssel zur Verwendung in Schritt 2 in die System-Clibboard. Fügen Sie den öffentlichen Schlüssel entsprechend in github oder gitlab ein.
Unter Linux kann ssh-keygen verwendet werden, um das Schlüsselpaar in ~ / .ssh zu generieren. Der resultierende private Schlüssel befindet sich in der Datei id_rsa, der öffentliche Schlüssel in der Datei id_rsa.pub.
Führen Sie in Colab aus
Verwenden Sie git, um wie gewohnt zu ziehen / zu drücken.
Die gleiche Idee kann für rsync (oder ssh) bewteen colab und HostA mit geringfügigen Änderungen verwendet werden:
Generieren Sie ein privat-öffentliches Schlüsselpaar. Kopieren Sie den privaten Schlüssel zur Verwendung in Schritt 2 in die System-Clibboard. Fügen Sie den öffentlichen Schlüssel in .ssh in HostA in autorisierte_Tasten ein.
Führen Sie in Colab aus
HostA >> /root/.ssh/known_hosts scheint nicht mit IP zu funktionieren.
quelle
Die Lösung https://stackoverflow.com/a/53094151/3924118 hat bei mir nicht funktioniert, da der Ausdruck
{user}
nicht in den tatsächlichen Benutzernamen konvertiert wurde (ich habe eine 400-fehlerhafte Anfrage erhalten). Daher habe ich diese Lösung geringfügig in die folgende geändert einer.Wenn Sie klonen können
your-repo
, sollte in der Ausgabe dieses Befehls kein Kennwort angezeigt werden. Wenn Sie eine Fehlermeldung erhalten, wird das Kennwort möglicherweise in der Ausgabe angezeigt. Stellen Sie daher sicher, dass Sie Ihr Notizbuch nicht freigeben, wenn dieser Befehl fehlschlägt.quelle
Ich habe einige der Methoden hier ausprobiert und sie haben alle gut funktioniert, aber ein Problem, mit dem ich konfrontiert war, war, dass es schwierig wurde, alle Git-Befehle und andere verwandte Befehle, zum Beispiel die Versionskontrolle mit DVC, in Notebook-Zellen zu handhaben. Also habe ich mich dieser schönen Lösung zugewandt, Kora. Es ist ein Terminalemulator, mit dem in colab ausgeführt werden kann. Dies gibt die Benutzerfreundlichkeit, die einem Terminal in einem lokalen Computer sehr ähnlich ist. Das Notizbuch ist noch am Leben und wir können Dateien und Zellen wie gewohnt bearbeiten. Da diese Konsole nur vorübergehend ist, werden keine Informationen angezeigt. GitHub-Login und andere Befehle können wie gewohnt ausgeführt werden.
Kora: https://pypi.org/project/kora/
Verwendung:
quelle
Mounten Sie das Laufwerk mit:
Dann:
So klonen Sie das Repo in Ihrem Laufwerk
Greifen Sie vom Repo aus auf andere Dateien zu (Beispiel: helper.py ist eine andere Datei im Repo):
quelle
Dies funktioniert, wenn Sie Ihr Repo und Colab teilen möchten. Funktioniert auch, wenn Sie mehrere Repos haben. Wirf es einfach in eine Zelle.
quelle
Klonen eines privaten Repos in Google Colab:
Token generieren:
Kopieren Sie das Token und klonen Sie das Repo (ersetzen Sie Benutzername und Token entsprechend).
quelle
Ich habe mich endlich zusammengerissen und ein Python-Paket dafür geschrieben.
pip install clmutils # colab-misc-utils
Erstellen Sie ein dotenv oder .env in / content / drive / MyDrive (wenn Google Drive auf Laufwerk gemountet ist) oder /content/drive/.env mit
# for git user_email = "your-email" user_name = "your-github-name" gh_key = "-----BEGIN EC PRIVATE KEY----- ...............................................................9 your github private key........................................J ..................................== -----END EC PRIVATE KEY----- "
In einer Colab-Zelle
from clmutils import setup_git, Settings config = Settings() setup_git( user_name=config.user_name, user_email=config.user_email, priv_key=config.gh_key )
Sie sind dann
git cloen
bereit, alles zu tun , Code zu ändern,git push
Dinge, als ob sie auf Ihrem eigenen schönen Computer zu Hause oder bei der Arbeit wären.clmutils
hat auch eine Funktion, die aufgerufen wird,setup_ssh_tunnel
um einen umgekehrten SSH-Tunnel nach Colab einzurichten . Außerdem werden verschiedene Schlüssel, Benutzername und Hostname aus der ENV-Datei gelesen. Es ist ein bisschen involvierend. Wenn Sie jedoch wissen, wie man einen Reverse-SSH-Tunnel nach Colab manuell einrichtet, können Sie problemlos herausfinden, wofür sie verwendet werden. Details finden Sie im Github Repo (Googleclmutils pypi
).quelle