Gitのコマンド
Gitで最新のコミットにミスがあったとしたら、git revertは、一番新しいコマンドを取り消してくれる。意図的にコミットした内容を修正することは非常に難しい。なぜなら、Gitというシステムにとって履歴を変えてしまうことは望ましくないことだからだ。 cleanは、もはや追跡していない不要なファイルを削除するコマンドだ。 もう何だか分からん感じになったら、resetというコマンドを使えば、最後のコマンドまで戻ってくれる。 ブランチなんてのは最初は必要じゃないんだ。でも、新しいブランチを造ってチェックアウトする場面は出てくる。ブランチは、ファイルシステム全体から構成されるが、元とは違うバージョンのシステムだ。ファイルシステムをコピーしているわけではない。変更点を記録しているだけだ。ブランチ間をスイッチしてチェックアウトする場合はもあるだろう。そういう場合、僕の場合は開発プロジェクトに対して複数のブランチを作成する事が多い。また、複数のブランチを1つのものに戻すことも可能だ。バージョンリリースみたいな重大なコミットを実行する場合は、gitにそのバージョンを記載した特別なタグをつける事ができる。 また、面白いコマンドもあって、これはblameと呼ばれる。もう訳が分からなくなった場合に、誰が混乱を招いたのかを突き止めることができる。コミットから変更点を教えてくれるんだ。 他にも、2つ面白いコマンドがあるよ。サブモジュールというのは、リポジトリの中にあるリポジトリだ。リポジトリをネストすることが出来る。でも、もし他の人がサブモジュール化したリポジトリに君がネストすると、色々と混乱の原因になったりする。Gitはバージョンを管理するものだ。もし、大元のリポジトリのバージョンを変更したら、サブモジュールのリンクのバージョンも変更しなければならない。これはやりたくないだろう。だから、(放置してしまうので)混乱が生じるというわけだ。 リポジトリを内包するリポジトリのクローンを作ることも可能だ。そうすると、サブツリーと呼ばれる便利なものになる。これは、僕もよく使うよ。Gitの大きなリポジトリを使うこともできるし、その一部分の小さな部分だけを使うこともできる。それご、サブツリーだ。リポジトリを分割して使用することもできる。分割して作業した後に、小さなリポジトリをサブツリーとして元の大きなリポジトリにプッシュしたりプルしたりすれば、その差異は大きな階層から見るとただのファイルの一部として認識するんだ。でも、できることは分離したGitリポジトリとしてプッシュしたりプルしたりできるように見えます。だからツリーって超便利で、大きなリポジトリの一部を分離して扱いたいときに重宝する。
(つづく)
講義の目次は【和訳版】FabAcademy 2016からご覧ください。
※この記事はFabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。