Gitのコマンドライン
Gitは使っているファイルシステムに依存する。だから、特に理由がないなら特殊なシステムの使用は避けるべきだ。 SSHディレクトリの中にはたくさんファイルがあるだろう。コンフィグファイルがね。君たちはSSHを伝える。それによりマシン、リポジトリにアクセスできる。そこに君たちが使用できるディレクトリがあるだろう。そこでは(SSHを)伝えて、ファイルを無視する。そして、そこにあるフックはマージンする前後で使用する事が可能だ。それらはサーバにとってもっと重要なものだ。だから、注意してほしい。
オーケー、では今からコマンドラインをお伝えしよう。これらのGUIはそれぞれメニューをクリックするかターミナルでコマンドを打ち込む事ができる。Gitは色々と表示してくれるだろう。xcongigも考慮すべきことを示してくれるだろう。システム内のユーザーが使うリポジトリのコンフィグファイルがあるだろうから、最初にやるべきことはGitの入力欄に君たちの名前を入力する必要がある。そして、コミットする操作を行うんだ。(ちなみに、コマンドラインのリストはここからチェックできる) そのとき、メールアドレスを入力する必要がある。このコマンドは便利だ。デフォルトは変わる。Gitは君たちがデータをアップするときに、そう、アップするときだけ、ブランチをマッチングしてくれる。あと、複数のブランドを持っている場合は、それも忘れず伝えてほしい。編集するときや、データをマージしようとするとき、これらの情報を使っているエディタに入力する必要がある。 次のコマンドは本当にオススメだ。めっちゃテクニカルな響きがクールだからだ。「デフォルトでリベースする」とか言い出しちゃったりしてね。これは、リポジトリに保存されているデータが編集しているものよりも新しい場合、両方のデータをマージできると言うことだ。作業ファイルを選んで、また履歴のトップに入れてやればいいんだ。これをやらない場合は、自分でマージしてコミットする必要がある。そして、曲がりくねった履歴の軌跡を描く。 ブランチを洗濯しない限り、履歴は直線的に保存されているからマージのコマンドを実行する必要はない。(でも、こんな綺麗に行かないだろうから、)デフォルトでリベースが実行されるように設定しておくのが良いと思うよ。 諸君のほとんどは新しいリポジトリにGitを設定する必要はない。Gitのクローンはリポジトリのコピーを保存してくれる。いわゆるクローンは、初回は真っ先にサーバの外側にコピーを作るようになっている。このクラスでは諸君のリポジトリIDとCrypto鍵を紐づけておく必要がある。 君たちのSSHコンフィグファイルが、その紐づけを行う。どの鍵を用いるべきか、どのリポジトリを用いるべきかは、コンフィグファイルを用いて、リポジトリに認識させれば良い。君たちはローカルにGitのリポジトリをリモート操作できるツールを手にしている。それが、リモートリポジトリだ。Gitにプッシュしたりプルしたりする時には、リモートとは何か分かるだろう。 プルはおそらく最もよく使うコマンドだ。プルを実行すると、最新の状態にマージされたデータを手にする事ができる。プッシュすると、そのデータが(作業後の状態で)戻される。進捗によっては、ブランチを作ることも可能だ。これは、複数の独立したバージョンで、超軽快。新しいやり方を試したい時や、コードを追加する時なんかに使えるよ。 ブランチを作るときは、プッシュすれば良い。ブランチを作るとき、Gitのステータスは超重要だ。何かファイルを編集したら、Gitステータスは何が変更されたかを表示してくれる。 で、コミットするってのは、なんと言うか、写真を撮るようなもんだ。写真を撮る前に、ハイ、チーズって言うみたいに、コミットステータスは「コメットできるよ!用意は良いかい?」的な感じで教えてくれる。(そんなフレンドリーには書いてないだろうが)君たちが追加する必要のあるファイルを準備をして、実際に追加すると、コミット完了だ。「コミットできたよ」的な表示がでる。 ちなみに、ステップごとに毎回、コミットしなくても良い。写真を撮るぞ!という感じで準備が出来れば、コミットすれば良いんだ。 getLoggerはあるファイルの履歴を、または全てのファイルの履歴を表示してくれる。もし、要らないファイルはただ消すだけじゃダメだ。Gitはバージョンの履歴を保存しているから、Gitから消去しなければならない。Gutから取り除いて、その履歴をフォローするのをやめさせなければならない。僕はファイルを整理する。移動させたり、削除したりね。こうやって、履歴をメンテナンスするんだ。
(つづく)
講義の目次は【和訳版】FabAcademy 2016からご覧ください。
※この記事はFabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです