#1.目的
最近、GCP上でcloud shellからGSRへのadd, commit, pushといった基本的な一連の流れはだいぶ慣れてきたものの、実際の開発はjupyter Labとかでやることも多いから、cloud shellからじゃなくてJupyter Labからpushできると便利だなと思い、基本の流れをまとめました。
具体的には、GCPのAI Platformからノートブックを立ち上げます。
#2.早速やってみよう
##(1)先にリポジトリを作っておく
「Qiita」というリポジトリをGSR上で作り、「test.txt」を事前にcloud shellからpushしておきました。
(下記はGSRのQiitaリポジトリの画面)
##(2)Jupyter Labの立ち上げ
GCPのハンバーガーメニュー(左側のメニュー)から「AI Platform」を選択。
※私はピン止めしているので上の方に出てきますが、実際は結構下の方にあります。
その後、ノートブックを選択し、インスタンスを作成します。
※私はリージョンはasia-northeastにしています。
##(3)ディレクトリの作成
下記のように、新しいフォルダを作っておきます。
今回はQiita_notebookというディレクトリを手動で作っておきました。
※clone_jupyterというディレクトリは別途私が個人的に作っているだけなので、無視してください。
##(4)Git用のnotebookを作成→GSRからクローンする
(3)で作成したQiita_notebookディレクトリ内にnotebookを作ります。
今回は「Qiita.ipynb」です。
このnotebook内で、下記のようにコマンドを打っていきます。
①初期設定
ここは通常のGitと同じ流れです。
②クローン
GSRのQiitaリポジトリをクローンします
→これを実行すると、上のキャプチャの③のように、突如ぽこっと「Qiita」リポジトリがクローンされます
##(5)テキストファイルを修正してみる
Qiitaリポジトリに移動し、test.txtを開き、下記のように追記
→保存して閉じておきます。
※ここが、実際は開発時にコードを修正しているイメージです。
##(6)Qiita.ipynbをQiitaリポジトリ内に移動
手動になりますが、今はQiitaリポジトリの外にいるQiita.ipynbをCutして、QiitaリポジトリにPasteしておきます。
※こうしないと、この後pushができませんでした。
##(7)いよいよ、pushしていく
下記のようにコマンドを打つと、GSRへpushされます!
##(8)GSRで確認
無事にjupyter Labからpushできていました!
#3.リモートリポジトリにpushしたくないファイルを設定する(7/19追記)
仕事で開発をしていると、避けて通れないのが**「セキュリティ関連」**。
gitでいうと、「パスワードが書かれたファイルを気づかないうちにリモートリポジトリにpushしてしまっていた」ということは割と頻繁に起こっているようです。
私も、セキュリティ的には問題ないのですが、意図せぬファイルをpushしてしまったことがあり、それ以来gitがめちゃくちゃ怖いです・・。
そんなときは「.gitignore」ファイルを作り、「ここに記載するファイルはバージョン管理しない」と設定することができます。
##「.gitignoreファイルの作成」
色んなサイトで.gitignoreファイルについては説明されていますが、意外に手取り足取り書いてくれているサイトが少なく、**「で、結局どうすればいいの?」**という点に詰まってしまいました。
特にjupyter lab上でのやり方に触れている記事が少なかったので、記載していきます。
下記のように、/test/branchディレクトリにリポジトリがクローンされているとします。
ここで、上のキャプチャの「+」を押し、テキストファイルを選択します。
テキストファイルが立ち上がりますので、untitled・・の部分を右クリックし、「名前の変更(Rename File)」を選択。
ここで、ファイル名を「.gitignore」にします(.txtも消します)。
これでRenameし、このテキストの中にバージョン管理したくないファイル名を書いていきます。
今回でいうと、例えば「administer.ipynb」と「member1.ipynb」に公開してはいけない情報が記載されているのでこの2つのファイルはバージョン管理しない、と設定するわけです。
このファイルを保存するとjupyter lab上からは「.gitignoreファイル」は見た目上いなくなりますが、「ls -a」で見ると存在します。
これだけで.gitignoreファイルの作成は完了です!
あとはこのファイルも併せてpushすれば、設定した2つのファイルはバージョン管理がされないというわけです。
※注意点
1.当然ですが、最初にpushする前にこの設定はしておいてください。
1度pushしてしまったら元も子もないので・・・。
2.notebookで作業する場合、「.gitignore」ファイルにバージョン管理したくないファイル名だけでなく、「.ipynb_checkpoints/」も入れておいた方がいいです。
→「.ipynb_checkpoints/」は、notebookで作業する場合自動でできるファイルのようで、バージョン管理したくないファイル名を.gitignoreファイルに記載していても、この「.ipynb_checkpoints/」の中にそのファイルがコピーされていて、pushしたら実は「.ipynb_checkpoints/」もpushされ、その中にバージョン管理したくない2つのファイルが入っていました・・。
#4.結び
いかがでしたでしょうか。
今後も適宜追記していきます。
Gitは奥が深い・・・。