$30 off During Our Annual Pro Sale. View Details »

いちばんやさしいGit入門

syobochim
April 25, 2019

 いちばんやさしいGit入門

20190425 JJUG ナイトセミナー

syobochim

April 25, 2019
Tweet

More Decks by syobochim

Other Decks in Technology

Transcript

  1. いちばんやさしいGit入門
    2019/4/25 JJUG #jjug
    宇賀神 みずき しょぼちむ(@syobochim)
    #jjug

    View Slide

  2. よろしくお願いします!
    宇賀神 みずき
    しょぼちむ(@syobochim)
    『いちばんやさしいGit&GitHubの教本』

    書きました!
    YouTube始めました!

    チャンネル登録お願いします
    #jjug

    View Slide

  3. このセッションの目的
    新たにGitを学びたい方に
    Gitの概念やGitコマンドを理解してもらう
    #jjug

    View Slide

  4. もくじ
    1. バージョン管理とは?
    2. Gitの考え方
    3. Gitの操作
    4. Gitの勉強方法
    #jjug

    View Slide

  5. もくじ
    1. バージョン管理とは?
    2. Gitの考え方
    3. Gitの操作
    4. Gitの勉強方法
    #jjug

    View Slide

  6. バージョンとは
    それぞれのファイルの状態
    =バージョン
    ファイルの複数バージョンを
    保持すること=バージョン管理
    #jjug

    View Slide

  7. バージョン管理がうまくいかないと…
    原始的なバージョン管理→バックアップを取り続ける
    • コピーに手間がかかる
    • ファイル名の一貫性が失われると崩壊する
    • うっかり上書きや削除をしてしまう
    本当の最新はどれ?!
    #jjug

    View Slide

  8. バージョン管理ができるGit
    ファイルの変更を「バージョン」として保存して

    記録した地点へいつでも戻れる
    作業者が複数人いても

    最新状態や履歴をわかりやすく保てる
    記録したバージョンに
    いつでも戻れる
    #jjug

    View Slide

  9. もくじ
    1. バージョン管理とは?
    2. Gitの考え方
    3. Gitの操作
    4. Gitの勉強方法
    #jjug

    View Slide

  10. ファイルの変更を記録 = コミット
    「いつ」「誰が」「どんな変更を」
    したか記録されていく
    コミットをどんどん
    保存していく
    コミット単位で
    行き来できる
    #jjug

    View Slide

  11. コミットのタイミング
    意味を持ったまとまりや
    後から扱いやすい単位でコミットをしよう
    #jjug

    View Slide

  12. コミットの保管場所 = リポジトリ
    リポジトリは

    「新規作成する」か

    「既存のリポジトリをコピー(クローン)する」

    方法がある
    「リポジトリ」に
    コミットを貯めていく
    #jjug

    View Slide

  13. 2種類のリポジトリ
    自分しか触らない 複数人で共有することが多い
    #jjug

    View Slide

  14. 2種類のリポジトリを使った共同作業
    ローカルリポジトリから
    リモートリポジトリへ反映したり
    リモートリポジトリから
    ローカルリポジトリへ反映したり
    これを繰り返してコミットを共有し、共同作業を進めていく
    #jjug

    View Slide

  15. もくじ
    1. バージョン管理とは?
    2. Gitの考え方
    3. Gitの操作
    4. Gitの勉強方法
    #jjug

    View Slide

  16. 2種類のリポジトリ
    自分しか触らない 複数人で共有することが多い
    #jjug

    View Slide

  17. それぞれのリポジトリでの操作
    自分しか触らない 複数人で共有することが多い
    まずはローカルリポジトリ
    #jjug

    View Slide

  18. ローカルリポジトリの3つの場所
    ワークツリー ステージングエリア Gitディレクトリ
    編集する
    コミットしたい
    ファイルを登録する
    コミットする
    #jjug

    View Slide

  19. ワークツリー
    ステージングエリア Gitディレクトリ
    コミットしたい
    ファイルを登録する
    コミットする
    編集する
    変更するファイルを保持する場所
    「ワーキングツリー」

    「作業ディレクトリ」とも呼ばれる
    #jjug

    View Slide

  20. ステージングエリア
    ワークツリー Gitディレクトリ
    コミットする
    コミットしたい
    ファイルを登録する
    コミットするファイルを

    一時登録する場所
    編集済みのものから

    コミットしたい

    ファイルだけを抜き出せる


    →コミットの単位を

     操作しやすくなる
    「インデックス」と呼ばれ
    ることもある
    #jjug

    View Slide

  21. コミットしたい
    ファイルを登録する
    Gitディレクトリ
    ワークツリー
    コミットする
    コミットを格納する場所
    原則、コミットで記録した内容は

    変更・削除されない
    #jjug

    View Slide

  22. ローカルリポジトリの3つの場所
    ワークツリー ステージングエリア Gitディレクトリ
    編集する
    コミットしたい
    ファイルを登録する
    コミットする
    #jjug

    View Slide

  23. 最低限覚えておきたいコマンド
    (前半)
    #jjug

    View Slide

  24. ローカルリポジトリを作成する
    通常の
    ディレクトリ
    リモートリポジトリ
    ローカルリポジトリ
    git init
    git clone
    新規作成
    既存をコピー
    #jjug

    View Slide

  25. コミットまでの流れ
    ワークツリー ステージングエリア Gitディレクトリ
    コミットしたい
    ファイルを登録する
    git add git commit
    コミットする
    #jjug

    View Slide

  26. ステータスの確認
    git status
    現在のローカルリポジトリの
    状態を確認
    0OCSBODINBTUFS
    $IBOHFTUPCFDPNNJUFE
    ʢதུʣ
    ɹɹOFXpMF(JU@.&.0NE
    全てコミット済み
    (中略)
    ファイルを編集
    (中略)
    ファイルを新規作成
    (中略)
    ステージングに登録
    #jjug

    View Slide

  27. 履歴の確認
    git log
    コミットの履歴を確認
    -p オプションをつけると
    どんな変更をしたかも
    確認できる
    #jjug
    ichiyasa

    View Slide

  28. 紹介したコマンド(前半)
    • git init
    • ローカルリポジトリの作成
    • git clone
    • リモートリポジトリからリポジトリをコピー
    • git add
    • コミットしたいファイルをステージングエリアへ
    登録
    • git commit
    • ステージングエリアの変更をコミットする
    • git status
    • ローカルリポジトリの状態確認
    • git log
    • コミット履歴の確認
    #jjug

    View Slide

  29. それぞれのリポジトリでの操作
    自分しか触らない 複数人で共有することが多い
    ローカルリポジトリここまで
    #jjug

    View Slide

  30. それぞれのリポジトリでの操作
    自分しか触らない 複数人で共有することが多い
    お次はリモートリポジトリ
    #jjug

    View Slide

  31. リモートリポジトリの役割
    コミットは任意のタイミングで
    リモートリポジトリに反映
    任意のタイミングで
    ローカルリポジトリに反映
    #jjug

    View Slide

  32. 共同作業の難しさ
    来週リリースの機能が
    すでに入っている…?!
    #jjug

    View Slide

  33. 共同作業に役立つブランチ
    同͡リϙδトリͰ複数の作業を並行して進め、

    任意の時点Ͱ反映Ͱきる
    ブランチを統合すること=「マージ」
    masterブランチ
    トピックブランチ
    #jjug

    View Slide

  34. マージで発生する変更の衝突
    開催地:沖縄県
    開催地:東京都
    開催地:北海道
    マージできない!

    変更の衝突を
    「コンフリクト」や「競合」
    と呼びます。
    #jjug

    View Slide

  35. コンフリクトを解決する
    コンフリクトが発生している時の
    git status
    <<<<<<<<
    コンフリクトしている箇所の開始地点
    >>>>>>>>>
    コンフリクトしている箇所の終了地点
    ========
    2つのブランチの境目
    1. ファイルを正しく変更して
    2. コンフリクトの印である記号を消して
    3. コミットする
    #jjug

    View Slide

  36. 最低限覚えておきたいコマンド
    (後半)
    #jjug

    View Slide

  37. リモートリポジトリの役割
    任意のタイミングで
    ローカルリポジトリに反映
    git pull
    git push
    コミットは任意のタイミングで
    リモートリポジトリに反映
    #jjug

    View Slide

  38. ローカルリポジトリ→リモートリポジトリ
    ローカルリポジトリ リモートリポジトリ
    git push origin update-venue
    プッシュ先の
    リモートリポジトリの名前
    プッシュするブランチ名
    #jjug

    View Slide

  39. リモートリポジトリ→ローカルリポジトリ
    ローカルリポジトリ リモートリポジトリ
    git pull origin master
    プル先の
    リモートリポジトリの名前
    プルするブランチ名
    #jjug
    #jjug

    View Slide

  40. ブランチの作成と移動
    git branch update-venue
    作成するブランチ名
    git checkout update-venue
    切り替え先の
    ブランチ名
    ブランチを切り替えて
    から作業する
    update-venue
    master
    git merge master
    変更を取り込みたい
    ブランチ
    update-venue
    master
    masterブランチの
    最新情報を取り込む
    update-venue
    master
    #jjug

    View Slide

  41. 紹介したコマンド(後半)
    • git push
    • ローカルリポジトリからリモートリポジトリへ反映
    • git pull
    • リモートリポジトリからローカルリポジトリへ反映
    • git branch
    • ブランチの作成
    • git checkout
    • ブランチの切り替え
    • git merge
    • ブランチの統合
    #jjug

    View Slide

  42. 最低限覚えておきたいコマンド
    (まとめ)
    #jjug

    View Slide

  43. 紹介したコマンド(前半)
    • git init
    • ローカルリポジトリの作成
    • git clone
    • リモートリポジトリからリポジトリをコピー
    • git add
    • コミットしたいファイルをステージングエリアへ
    登録
    • git commit
    • ステージングエリアの変更をコミットする
    • git status
    • ローカルリポジトリの状態確認
    • git log
    • コミット履歴の確認
    #jjug

    View Slide

  44. 紹介したコマンド(後半)
    • git push
    • ローカルリポジトリからリモートリポジトリへ反映
    • git pull
    • リモートリポジトリからローカルリポジトリへ反映
    • git branch
    • ブランチの作成
    • git checkout
    • ブランチの切り替え
    • git merge
    • ブランチの統合
    #jjug

    View Slide

  45. もくじ
    1. バージョン管理とは?
    2. Gitの考え方
    3. Gitの操作
    4. Gitの勉強方法
    #jjug

    View Slide

  46. 実際に使ってみるのがいちばん!
    一人でも始められる!

    プログラミング以外でもバージョン管理は役に立つ!
    • 業務で開発しているプロジェクトのソースコード
    • 趣味で開発しているプロジェクトのソースコード
    • 勉強会メモ
    • 書籍の原稿
    などなど…
    #jjug

    View Slide

  47. コマンドに慣れない…
    無理をせずGUIクライアントを試してみよう!

    大切なのは、Gitで何ができるのかを理解して

    自分はどこでどんな操作をしているのか意識すること!
    #jjug

    View Slide

  48. おすすめ書籍
    詳しく、丁寧に、そして
    いちばんやさしく
    書いてある
    #jjug

    View Slide

  49. 書籍で紹介しているコマンドたち
    git checkout
    git rm
    git diff
    git reset
    git config
    git remote
    git fetch
    #jjug

    View Slide

  50. もくじ
    1. バージョン管理とは?
    2. Gitの考え方
    3. Gitの操作
    4. Gitの勉強方法
    #jjug

    View Slide

  51. 最後に
    JJUGのセミナーがきっかけで

    「いちばんやさしいGit&GitHubの教本」

    を書くことになりました!
    JJUGのみなさまありがとうございます!
    書籍お持ちの方はAmazonレビューを

    是非お願いします!

    (やさしくお願いします)
    #jjug

    View Slide

  52. ありがとうございました!
    #jjug

    View Slide