Edited at

全12回の勉強会でやっているGitの使い方 - AWS上で構築するRESTfulアプリ勉強会~Web開発ワークショップ~

More than 3 years have passed since last update.


12回もやる勉強会で必要になってきたGitの操作って?

こんな勉強会をやってます。全12回。

AWS上で構築するRESTfulアプリ勉強会~Web開発ワークショップ~ - connpass

第1回 開発環境の構築でAWS-EC2のインスタンスを作成して開発環境を作っておけば、第n回からでも参加できるようにしています。


  • 各参加者が作成したソースは、自分のGitHubアカウントで管理してもらう。

  • 主催側のソースはここで管理していて、勉強会の開催時にはここにその回の完成版ソースが載っている状態にしています。

で、勉強会開始時に、

「各参加者の環境に前回の内容がきちんと終了した状態のソースがある状態」

から始める必要があるのですが、そのための作業手順を書いたのがこの記事です。


  • 前回の内容を途中までやった方

  • 前回の内容を完了した方

  • 今回から参加の方

によって手順が少し違います。

:warning: 勉強会の内容は、事前にQiitaに投稿して、各参加者がマニュアルとして見られるようにしています。

そこに毎回この手順を書くのもなんなので、別記事にした次第です。各勉強会の投稿からここにリンクします。


勉強会の前にこういう状態にしておきたい!

やりたいことは、


  • masterブランチを前回の内容を全て終えた状態にする

  • 前回分の終了状態となったmasterブランチを元に、今回の作業用ブランチを作成し、チェックアウトする


以下の説明の前提

ここでは、


  • 前回 = 第4回

  • 今回 = 第5回

として話を進めます。第6, 7 回と進んだら適宜読み替えて下さい。


  • 前回自分が作業したブランチは、vol/04

  • 前回分の答えとして主催者が用意したブランチは、vol/04-finish

  • 今回自分が作業するブランチは、vol/05

  • 今回分の答えとして主催者が用意したブランチは、vol/05-finish

です。


手順1 - masterブランチを前回の内容を全て終えた状態にする


前回が作業途中の方はまずこれ

とにかくコミットしましょう!途中でもとにかく!

未コミットの変更が残ったままだとGitにいろいろ怒られますので。

:white_check_mark:git add .

:white_check_mark:git commit -m "途中だけどコミット"

こんな感じで。


次は全員同じ。 fork元をリモートリポジトリとして追加する

第1回勉強会でforkした元のリポジトリをリモートリポジトリとして追加します。

その前に確認。

:white_check_mark:git remote

とコマンドを打って、

origin

upstream

と表示される場合はこの作業は終わっています。次へ行きましょう!

upstreamが表示されない人は次のコマンド。

:white_check_mark:git remote add upstream https://github.com/suzukishouten-study/rest-study.git

これでOKです!


次も全員同じ。 upstreamリポジトリから最新を取得する

:white_check_mark:git fetch upstream

これでOK!今回分の完成ソースも含めた全てのソースが取得出来ました。

次は、


  • 前回の内容を完了した方

  • 前回の内容を途中までやった方と今回から参加の方

で少し違うのでご注意!


前回の内容を完了した方

masterブランチを前回の内容を全て終えた状態にします。

前回を完了した方は、vol/04ブランチが綺麗に出来上がっているので、これをマージです。

:white_check_mark:git checkout master

でmasterブランチをチェックアウト後、

:white_check_mark:git merge vol/04

でマージ。これでOK!


前回の内容を途中までやった方と今回から参加の方

masterブランチを前回の内容を全て終えた状態にします。

前回の内容を途中までやった方はvol/04が未完成、今回から参加の方は、そもそもブランチがありません。

upstreamリポジトリのvol/04-finishブランチが前回終了状態のソースなので、これをマージです。

:white_check_mark:git checkout master

でmasterブランチをチェックアウト後、

:white_check_mark:git reset --hard upstream/vol/04-finish

で強制的にマージ。というかリセット。これでOK!


手順2 - 前回分の終了状態となったmasterブランチを元に今回の作業用ブランチを作成し、チェックアウトする

masterブランチは手順1で全員同じになったので、この手順2は全員同じ作業です。

今回の作業用ブランチとして、vol/05ブランチを作り、チェックアウトします。

masterブランチから分岐してvol/05ブランチを作成するので、まずmasterブランチにいることを確認して下さい。

これまでの作業で、既にmasterブランチにいるはずですが念の為。

:white_check_mark: git branch でmasterにいることを確認

:white_check_mark: もしmasterにいなかった場合は、git checkout master でmasterをチェックアウト

次に、以下コマンドでvol/05ブランチを作成します。

:white_check_mark: git branch vol/05 でブランチを作って

:white_check_mark: git checkout vol/05 でそのブランチをチェックアウト

または、

:white_check_mark: git checkout -b vol/05 でブランチ作成とそのブランチのチェックアウトを一度に実行

これでOK!


確認

念のため確認します。

:white_check_mark: git log でコミットログを確認してみましょう。

コミットログが出力されます。

前回の最後のコミットが表示されていればOKです。

これでブランチの準備は整いました。

勉強会を始めましょう!



おまけ

コマンドまとめ。上に書いてないコマンドも。勉強会の準備のためによく使ってるもの中心。

:warning: (自分用メモ)


勉強会で使っているもの

まとめるまでもない...詳しくはググりましょう。



  • git add .


    • 全部ステージ




  • git commit -m "途中だけどコミット"


    • メッセージを付けてコミット




  • git remote


    • リモートリポジトリを表示




  • git remote add upstream https://github.com/suzukishouten-study/rest-study.git


    • upstreamという名前でhttps://github.com/suzukishouten-study/rest-study.gitをリモートリポジトリとして登録。




  • git fetch upstream


    • リモートリポジトリをフェッチ。Clone元は自動でoriginと命名、fork元はupstreamという命名するのがセオリー。かな?




  • git checkout master


    • masterブランチをチェックアウト。




  • git branch vol/05



    • vol/05ブランチを作成




  • git checkout -b vol/05



    • vol/05ブランチ作成とチェックアウトを一度に実行




  • git merge vol/04


    • いまいるブランチにvol/04ブランチをマージ。




  • git reset --hard upstream/vol/04-finish




  • git log


    • コミットログを確認。


    • git log --graphとするとグラフ表示。




勉強会の準備で使うもの

ユースケース毎に。


  • upstreamに直接push(upstreamにpush権限がある場合のみ可能)



    • git push upstream vol/05:vol/05-finish


      • ローカルのvol/05をupstreamにvol/05-finishという名前でpush





  • ブランチ名変更



    • git branch -m vol/05 vol/05-finish


      • 現在vol/05ブランチにいるなら、git branch -m vol/05-finishでよい。





  • ブランチ削除



    • git branch -d test


      • testブランチを削除





  • 直前コミットを修正。ちょっとだけ修正漏れた、と言う時にコミットを分けたくない時。



    • git add .でステージ


    • git commit --amendで直前コミットを修正



  • 詳細なgit remote



    • git remote -v


      • fetch元とpull先のリポジトリのURIが表示される





  • 詳細なgit branch



    • git branch -a


      • リモートも含め全部表示




    • git branch -av


      • 上記に加え、各ブランチの最終コミットハッシュとメッセージも表示




    • git branch -avv


      • 上記に加え、リモート追跡ブランチも表示






普段使ってるもの



  • git rebase master


    • masterブランチの修正を取り込む。現ブランチとの分岐位置をすすめる。mergeするよりコミットログを汚さなくてよい。




  • git reset --hard HEAD


    • 全部きれいに元に戻す。




  • git rebase -i HEAD~n


    • コミットの修正。HEAD~nのnはいくつ前のコミットまで修正するか。いつもググって思い出す。


      • 修正後、やめる場合はgit rebase --abort

      • 続ける場合はgit rebase --continue






その他

イケてる使い方見つけたら追記します。

以上です。