北海道旭川市で、11月14日にGit勉強会#1を開催しました。内容は日本語版Pro Gitを使ったハンズオン及びGithubを使った課題を行いました。
勉強会のファシリテーションに関して気をつけた点や気付いた点・反省点などを共有したいと思います。
心掛けるたこと
-
混乱を避けるため、あらかじめ
.bash_profile
等を編集して、エイリアス等は無効にしておく。 -
参加者がスクリーンに投影されたコマンドを見やすいように ターミナルの文字の大きさを大きくする。
パソコンのディスプレイではなく、会場のスクリーンを見ながらコマンドするようにする。また、できれ
ばスクリーンだけでなく、会場側にも顔を向けて話すことも心掛ける。
(僕はターミナルの文字の大きさの調整できることに気づかず、何故かMacの画面ズーム機能をつかっていました・・・orz)
内容
Chapter1 使い始める
Chapter1では、Subversion・CVS等の他のVCSの昔話・経験談をしました。雑談を交えて、参加者各々のVCS経験有無やレベルなど把握。また、configについては、globalにエディタ・名前・メールアドレスが設定できているかだけ確認して次へ進みました。
Chapter2 Git の基本
ハンズオンと共にadd
, status
, checkout
, diff
, reset
, commit
等の基本的なコマンドを練習。(reset
に関しては、この時点では細かく触れずにreset HEAD
のみ使用)
具体的にファイルを適当に作って練習していきました。ステージされてキャッシュされているファイルと、そうでないファイルの違いは、最初に戸惑う箇所なので、git diff
, git diff --cached
, git reset HEAD
などのコマンドを何度も使い、練習しました。
(例: 変更されたファイルをgit add
でステージした後で更に編集を加える。そうするとgit diff
でステージ後のdiffが見れて、git diff --cached
でステージした時点でのdiffが見れる。その状態でコミットした場合は後から加えた変更はコミットされない、等など)
コマンドのオプションを一つ一つ細かく見るのは避けましたが、git commit
の--amend
オプションなど、便利なオプションについては勉強しました(ハンズオンにもちゃんと載ってる)。
git add -p
でe
(edit)を選択した場合の処置について、コツがわからないと難しいので、時間をかける予定でしたが、時間不足のため素早く説明だけして宿題としました。軽くググッてもヒットしなかったので、Youtubeにスクリーンキャストをアップしておきました。(初めての経験なので、色々と不備があります。声が小さい)
http://www.youtube.com/watch?v=9T82aJCFiIQ
ここで、旭川オープンソースコミュニティのGithub Organizationに作っていおいた課題を始めました。下準備として全員、Githubアカウントを作っていることを確認して、pushする権限を与えます。お題01は、Readme.md
に自分の名前を追加するという、とても単純な課題です。ただ、全員同じ箇所を編集するのでコンフリクト必至の課題です。出来る人ほど先に上がり、後の人はコンフリクトに苦しみます。以下のログを見ていただければ、カオスな状況をご想像になることができると思います。
$ git log --oneline --graph
* 2d05679 Merge branch 'master' of https://github.com/AOSC/git-exercises
|\
| * 6f9d8a3 Merge branch 'master' of https://github.com/AOSC/git-exercises
| |\
| | * 21f7ecc add masaru99 #1
| | |\
| | | * 039e884 add asahi #1
| | * | 8a49030 add masaru99
| | |/
| * | c190a81 add ykato #1
| * | ac0d9bb add ykato #1
| |/
* | b33faa3 add
|/
* a239e5c update readme
最後はgit log
のオプションについて細かく見てみて、実際のオープンソースプロジェクトのログを見たりしました。
気付いた点・反省点
- 僕はHTTPSはreadonlyだと勘違いしていました。色々と参加者の皆様に教えられました・・・。SSHの設定となると
- Chapter3のブランチまで行けると思ったのですが、意外に時間がかかりました。2時間ぐらいのセッションなら最初の2つのChapterで一杯一杯だと思います。お題は2つ用意していましたが、結局1つしかできませんでした。
まとめ
Pro Gitは、やはり素晴らしいと感じました。僕がPro GitでGitを勉強したのは2年くらい前だったので、内容も以前より充実している気がしました。勉強会の準備を契機に知らなかったことも発見したりもして、本当に勉強になりました。(git log
の--since
オプションとか使ったことありませんでした)
宣伝
第2回Git勉強会は1月20日に開催予定です。branch
,rebase
,merge
などを勉強します。コンフリクトした時の対処法や、git rebase -i
の使い方などなど、Gitの核となる部分に迫ります!