前回のGit勉強会に引き続き、1月20日に北海道旭川市で2回目のPro GitハンズオンGit勉強会を開催しました。同じようにPro Gitを使ったハンズオン勉強会を地方で(例えば北見市とか)計画されている方のために、勉強会Tipその他をメモしたいと思います。前回に引き続き、今回も予定通りに進みませんでした。
内容
やはりというか、Gitは奥が深いので、2時間がアッという間に過ぎます。git-branch
, git-merge
, git-rebase
について深く突っ込んで勉強する予定でしたが、git-rebase
に関してはほとんど手が付けられませんでした。また、予定していた練習問題にも手が付けられませんでした。
前回の復習
前回の宿題、git add -p
について、少し時間を使って復習をしてみました。変更ある箇所の一部だけステージするって面倒な作業ですが、うまくコミットヒストリーを作るのに必要になります。
これについては動画を作ってみました。http://www.youtube.com/watch?v=9T82aJCFiIQ
Chapter3 Gitのブランチ機能
3.1 ブランチとは
このチャプターでHEAD
の概念が明確になります。この辺りは、どんどん読み進めてしまいました。
3.2 ブランチとマージの基本
わざとコンフリクトさせるようなヒストリを作って、実際に試してみた。僕のgit-merge
の理解が浅いため、コンフリクトすると思ったらしなかったりして、失敗したりもするアクシデントがありました...
マージの仕方や、git-stash
の使い方などを実践していきました。
気付いた点・反省点
百聞は一見に如かず
学生の参加者が、
僕、
git stash apply
とgit stash pop
の違いがわかりません!
と言ってきました。git-stash
の実演をスクリーンに映してしていたのですが、彼だけ見ていなかったようです。単純な違いですし、ほかの全員は理解しているので、全員で一人ずつ説明を試みました。それぞれ違うアプローチで説明を試みました。しかし...
git stash apply
とgit stash pop
の違いが、まだ分かりません!
という答えが帰ってきました。これは、なかなか考え所だと感じました。ソフトウェアというのは抽象的で理解がなかなかできないものです。何故ならソフトウェアは目に直接見えないものなので、自分の頭で想像しなければならないからです。エンジニアはその難しい概念的なものを専門用語を使わずに、わかりやすく説明する能力が必要されていると思います。apply
とpop
の違いは簡単なものなので、理解できるように説明できなかったことには残念です。
ただし、これは抽象的な概念ではなく、かなり具体的に示せるものなので、たいした問題ではありませんでした。実際にstash
されたキャッシュをapply
した場合と、pop
した場合それぞれ、もう一度実演しました。もちろん、彼はそれを見て瞬時に理解に到達しました。
GIT-STASH(1) Git Manual GIT-STASH(1)
NAME
git-stash - Stash the changes in a dirty working directory away
SYNOPSIS
git stash list [<options>]
git stash show [<stash>]
git stash drop [-q|--quiet] [<stash>]
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
git stash branch <branchname> [<stash>]
git stash [save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [<message>]]
git stash clear
git stash create [<message>]
git stash store [-m|--message <message>] [-q|--quiet] <commit>
まとめ
今回は4人で勉強会をしたのですが、4人が最小限の人数かなと感じました。ということは地方でも4人、Gitハンズオンをしたい有志を見つければ勉強会開催が可能!