Help us understand the problem. What is going on with this article?

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

More than 5 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

その他

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

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away