
Git&GitHub入門②ブランチなど〜
前回の振り返り
前回は自然農法をITで普及させるという目標を実現させるために、だれかと一緒に開発をすることを考え、複数人での開発には必須のバージョン管理ツールである「Git」を学習することにしました。
テキストは「つくって、壊して、直して学ぶ Git&GitHub 入門」です。
ブランチの基本
テキストでは、早速ブランチを作って切り替えてみるということをします。
git branch ブランチを表示する
git branch <ブランチ名> ブランチを作る
git switch <ブランチ名> ブランチに移動する
git switch -c <ブランチ名> ブランチを作りながらブランチに移動する

ここで、実際に作ったブランチに新しいファイルをadd、commitして、git logで見てみます。ブランチが2つできて、それぞれに記録が残っています。

ブランチの削除については、削除の前に元のブランチに戻っておく必要があります。再度スイッチしてブランチを削除します。
git switch -d <ブランチ名> ブランチを削除する(未コミットなし)
git branch -D <ブランチ名> ブランチを削除する(未コミットあり)

一時退避のgit stash
続いてあるブランチでバージョン管理しながら編集している最中に、別のブランチに移動する(戻る)必要が出た際に、一時的に編集を退避させることを行います。テキストに従って例を作っていきます。
file.txtを作って、まずmasterブランチでコミットします。

次に新しいブランチfeatureを作ってその中で編集してコミットします。

そしてさらに編集してコミットせずにおいておきます。これで準備はできました。差分も確認してみましょう。

このテキストのコンセプト通り、エラーを出してみます。このままコミットしていない変更がある段階で、masterブランチに戻ってみます。

ここでgit stashをして一時退避をします。
一時退避をした後で、cat file.txtにてファイルの中身を見てみるとコミットしていない編集が消えています。
その状態でまたmasterブランチに切り替えます。今回はエラーが出ません。

一時退避した内容を取り出すgit stash pop
一時退避した変更があるブランチに戻ります。
そしてgit statusを確認するとコミット対象は存在しないとされています。

git stash popで一時退避していた編集"Updata again"を取り出してみます。
cat file.txtで中身を見てみると"Update again"が復活しています。

まずはログの整理としてrebaseを
複数人で作業したことでコンフリクトしてしまったしまった場合にも使えるrebaseですが、テキストでは一旦ログをまとめる用途としてrebaseを使って行きます。
ファイルを作って、とにかくたくさんコミットを作ります。

git rebase -iでコミットをまとめていきます。今回は、1つ前と今回のコミットをまとめたいので、2つ前のコミットをベースにして行きますので、
git rebase -i HEAD~2
というコマンドを入力します。HEAD~xのxを変更して何個前のコミットをベースにするかを変えられます。
コマンドを入力すると画像のようなエディタが開きます。

git logで見ていた通り、1つ前と最新のコミットがpick <コミットid>の形で表示されています。ここでコミットを残すという命令のpickを、前回のコミットに統合してコミットするという意味のsquashに変更して保存します。

保存するにはctrlキーとxを押して、yを入力したあとEnterを押します。
するとコメントの編集エディタがまた開きますので、コメントを修正します。#でコメントアウトされている部分は無視し、それ以外の行を消して新しいコメントを書きましょう。


またctrlキーとxを押して、yを入力したあとEnterを押します。

これでコミットがまとめられています。git logで確認しましょう。

次回は第3章を見ていきます
さて次回からは実際に複数人でプログラム開発をするためにGitHubのセットアップや基本的な扱いを習得していければと思います。お読みいただきありがとうございました。