$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

  2. よろしくお願いします! 宇賀神 みずき しょぼちむ(@syobochim) 『いちばんやさしいGit&GitHubの教本』
 書きました! YouTube始めました!
 チャンネル登録お願いします #jjug

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

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

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

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

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

  8. バージョン管理ができるGit ファイルの変更を「バージョン」として保存して
 記録した地点へいつでも戻れる 作業者が複数人いても
 最新状態や履歴をわかりやすく保てる 記録したバージョンに いつでも戻れる #jjug

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

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

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

  12. コミットの保管場所 = リポジトリ リポジトリは
 「新規作成する」か
 「既存のリポジトリをコピー(クローン)する」
 方法がある 「リポジトリ」に コミットを貯めていく #jjug

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

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

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

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

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

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

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

    #jjug
  20. ステージングエリア ワークツリー Gitディレクトリ コミットする コミットしたい ファイルを登録する コミットするファイルを
 一時登録する場所 編集済みのものから
 コミットしたい


    ファイルだけを抜き出せる
 
 →コミットの単位を
  操作しやすくなる 「インデックス」と呼ばれ ることもある #jjug
  21. コミットしたい ファイルを登録する Gitディレクトリ ワークツリー コミットする コミットを格納する場所 原則、コミットで記録した内容は
 変更・削除されない #jjug

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

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

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

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

    コミットする #jjug
  26. ステータスの確認 git status 現在のローカルリポジトリの 状態を確認 0OCSBODINBTUFS $IBOHFTUPCFDPNNJUFE ʢதུʣ ɹɹOFXpMF(JU@.&.0NE 全てコミット済み

    (中略) ファイルを編集 (中略) ファイルを新規作成 (中略) ステージングに登録 #jjug
  27. 履歴の確認 git log コミットの履歴を確認 -p オプションをつけると どんな変更をしたかも 確認できる #jjug ichiyasa

    <ichiyasa-g@example.com>
  28. 紹介したコマンド(前半) • git init • ローカルリポジトリの作成 • git clone •

    リモートリポジトリからリポジトリをコピー • git add • コミットしたいファイルをステージングエリアへ 登録 • git commit • ステージングエリアの変更をコミットする • git status • ローカルリポジトリの状態確認 • git log • コミット履歴の確認 #jjug
  29. それぞれのリポジトリでの操作 自分しか触らない 複数人で共有することが多い ローカルリポジトリここまで #jjug

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

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

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

  33. 共同作業に役立つブランチ 同͡リϙδトリͰ複数の作業を並行して進め、
 任意の時点Ͱ反映Ͱきる ブランチを統合すること=「マージ」 masterブランチ トピックブランチ #jjug

  34. マージで発生する変更の衝突 開催地:沖縄県 開催地:東京都 開催地:北海道 マージできない! ❌ 変更の衝突を 「コンフリクト」や「競合」 と呼びます。 #jjug

  35. コンフリクトを解決する コンフリクトが発生している時の git status <<<<<<<< コンフリクトしている箇所の開始地点 >>>>>>>>> コンフリクトしている箇所の終了地点 ======== 2つのブランチの境目

    1. ファイルを正しく変更して 2. コンフリクトの印である記号を消して 3. コミットする #jjug
  36. 最低限覚えておきたいコマンド (後半) #jjug

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

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

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

    #jjug #jjug
  40. ブランチの作成と移動 git branch update-venue 作成するブランチ名 git checkout update-venue 切り替え先の ブランチ名

    ブランチを切り替えて から作業する update-venue master git merge master 変更を取り込みたい ブランチ update-venue master masterブランチの 最新情報を取り込む update-venue master #jjug
  41. 紹介したコマンド(後半) • git push • ローカルリポジトリからリモートリポジトリへ反映 • git pull •

    リモートリポジトリからローカルリポジトリへ反映 • git branch • ブランチの作成 • git checkout • ブランチの切り替え • git merge • ブランチの統合 #jjug
  42. 最低限覚えておきたいコマンド (まとめ) #jjug

  43. 紹介したコマンド(前半) • git init • ローカルリポジトリの作成 • git clone •

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

    リモートリポジトリからローカルリポジトリへ反映 • git branch • ブランチの作成 • git checkout • ブランチの切り替え • git merge • ブランチの統合 #jjug
  45. もくじ 1. バージョン管理とは? 2. Gitの考え方 3. Gitの操作 4. Gitの勉強方法 #jjug

  46. 実際に使ってみるのがいちばん! 一人でも始められる!
 プログラミング以外でもバージョン管理は役に立つ! • 業務で開発しているプロジェクトのソースコード • 趣味で開発しているプロジェクトのソースコード • 勉強会メモ •

    書籍の原稿 などなど… #jjug
  47. コマンドに慣れない… 無理をせずGUIクライアントを試してみよう!
 大切なのは、Gitで何ができるのかを理解して
 自分はどこでどんな操作をしているのか意識すること! #jjug

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

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

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

  51. 最後に JJUGのセミナーがきっかけで
 「いちばんやさしいGit&GitHubの教本」
 を書くことになりました! JJUGのみなさまありがとうございます! 書籍お持ちの方はAmazonレビューを
 是非お願いします!
 (やさしくお願いします) #jjug

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