Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

ステージングエリア ワークツリー Gitディレクトリ コミットする コミットしたい ファイルを登録する コミットするファイルを
 一時登録する場所 編集済みのものから
 コミットしたい
 ファイルだけを抜き出せる
 
 →コミットの単位を
  操作しやすくなる 「インデックス」と呼ばれ ることもある #jjug

Slide 21

Slide 21 text

コミットしたい ファイルを登録する Gitディレクトリ ワークツリー コミットする コミットを格納する場所 原則、コミットで記録した内容は
 変更・削除されない #jjug

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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