Gitはじめの一歩

1,630
-1

Published on

JJUG ナイトセミナー「Git入門」

Published in: Engineering
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,630
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Gitはじめの一歩

  1. 1. Gitはじめの一歩 16/01/25 JJUGナイトセミナー Git入門
  2. 2. わたし Java女子部 JJUG 株式会社マイクロアド Git歴は10ヶ月ちょい @ihcomega こなよ
  3. 3. 今日はGitを始めるための 準備をしよう
  4. 4. 細かいことより
  5. 5. どういう流れで どういう操作をするのか
  6. 6. どんなことを 知っておいたら良さそうか
  7. 7. 大まかに捉えて欲しい!
  8. 8. アジェンダ Gitとは Gitの基本操作 Git初心者がやりがちなこと Gitで困ったときのTIPs Gitの勉強方法
  9. 9. アジェンダ Gitとは Gitの基本操作 Git初心者がやりがちなこと Gitで困ったときのTIPs Gitの勉強方法
  10. 10. Gitとは何だろう?
  11. 11. Gitとは バージョン管理ツール とよく言われる
  12. 12. バージョン管理とは その名の通り バージョンを管理することで 変更履歴の把握 バックアップ 複数人で作業 などを可能にするもの
  13. 13. バージョン管理のない 世界を考えてみよう
  14. 14. 元に戻せない Undoできないのに ⌘+z (Ctrl+z) を 連打してみて むなしくなる
  15. 15. ファイルの新旧が 分からない 同じ階層で 錯綜する歴史を 紐解く考古学者に なってしまう
  16. 16. これはちょっと 嫌だよね
  17. 17. れきしだいじに
  18. 18. というわけで
  19. 19. バージョン管理する方法と 種類を知ろう
  20. 20. 管理に使うもの リポジトリ という歴史の保管庫
  21. 21. バージョン管理の種類 集中バージョン管理 システム 分散バージョン管理 システム
  22. 22. バージョン管理の種類 集中バージョン管理 システム 分散バージョン管理 システム Gitはこっち
  23. 23. 分散バージョン管理の 便利なところ 自分専用リポジトリが作れる →気軽にリポジトリの操作ができて 精神的にも嬉しい 集中バージョン管理だと… ⇔皆で使うリポジトリが1つあるだけなので 何かする度プロジェクト全体に影響する ローカルだけで作業できる 集中バージョン管理だと… ⇔リポジトリにアクセスできなくなると作業が止まる
  24. 24. では、その バージョン管理のために Gitでは何をするのか?
  25. 25. 改めてGitとは 大事な瞬間を切り取って リポジトリで管理! スナップショットを保管していく感じ ファイルを操作というよりファイルの状態を操作 ファイルを記録というよりファイルの歴史を記録
  26. 26. アジェンダ Gitとは Gitの基本操作 Git初心者がやりがちなこと Gitで困ったときのTIPs Gitの勉強方法
  27. 27. まずは操作の流れを 整理して全体を掴もう
  28. 28. 使うもの リモート リポジトリ (サーバにある リポジトリ) ローカル リポジトリ (自分のリポジトリ) ワークツリー (Gitで管理する ファイルを 操作・編集する場所) ローカル
  29. 29. チーム開発なら 複数人で 共有する ことが多い 基本的に 自分しか触らない ファイルを置いて 作業する ディレクトリを イメージしてほしい ローカル 使うもの
  30. 30. リモート リポジトリ ローカル リポジトリ ワークツリー ローカル ファイルを編集し 歴史をリモートへ 送る準備 操作の流れ
  31. 31. ローカル ローカルから リモートへ 操作の流れ リモート リポジトリ ローカル リポジトリ ワークツリー
  32. 32. 他の人のローカル ローカル リモートから ローカルへ 操作の流れ リモート リポジトリ ローカル リポジトリ ワークツリー
  33. 33. 他の人のローカル ローカル 操作の流れ リモート リポジトリ ローカル リポジトリ ワークツリー リモートの歴史を 反映
  34. 34. ローカル 他の人のローカル ローカルから リモートへ リモートから ローカルへ 皆でこれを繰り返す 操作の流れ ファイルを編集し 歴史をリモートへ 送る準備 リモートの歴史を 反映 リモート リポジトリ ローカル リポジトリ ワークツリー
  35. 35. 今見たフローを Git用語(コマンド)と 一緒に考えよう
  36. 36. まずはローカルでの操作
  37. 37. ローカルリポジトリ 作成 クローン git clone 作成 git init 既に使いたい Gitリポジトリが 存在する場合 Gitリポジトリを 新規作成 する場合 .gitという隠しフォルダができる
  38. 38. ローカルでの操作 ローカル コミット git commit 「コミット」するとリモートへ渡せるようになる 追加 git add
  39. 39. もうちょっと詳しく見て コミットまでの流れや 元に戻す方法を知ろう
  40. 40. コミット 対象から 除外 一番最近 コミットしたときの 状態を取得編集済 ステージ済 コミット済 編集前 ローカルでの操作詳細 状態の変化を理解するとよい ワークツリー インデックス リポジトリ コミット 対象に追加 コミット
  41. 41. 編集済 ステージ済 コミット済 編集前 状態の変化を理解するとよい コミット git commit リセット git reset チェックアウト git checkout 追加 git add ローカルでの操作詳細 インデックス リポジトリ ワークツリー
  42. 42. ローカルの状態を 確認しよう ステータス git status 変更の状態を確認 編集済? ステージ済? Git管理下に ない? ※確認方法は スライドの後半で
  43. 43. 続いてリモートでの操作
  44. 44. リモートリポジトリ 操作・確認 リモート git remote リモートリポジトリに 関する操作 繋がってる リモートリポジトリは 誰じゃー 俺やで originと申します ローカル 私も追加 して くださーい リモートの名前、デフォルトはoriginとなる (クローン元のリポジトリがあればそれがorigin)
  45. 45. リモート・ローカルで 歴史をやりとり ローカル プッシュ git push
  46. 46. リモート・ローカルで 歴史をやりとり ローカル フェッチ git fetch マージ git merge プル=フェッチ+マージ プル git pull
  47. 47. リモート・ローカルで 歴史をやりとり ローカル フェッチ git fetch マージ git merge プル=フェッチ+マージ プル git pull プッシュ git push
  48. 48. これまで紹介した操作を まとめると…
  49. 49. ローカル フェッチ git fetch マージ git merge プル git pull おさらい コミット git commit 追加 git add プッシュ git push プル=フェッチ+マージ
  50. 50. 大まかな流れ、 分かったかな?
  51. 51. お次は 歴史の分岐を可能にする ブランチについて学ぼう
  52. 52. ブランチとは リポジトリ コミット (歴史の記録) コミット(歴史の記録)がたまりゆくリポジトリで… 古 新
  53. 53. ブランチとは ブランチを使うと歴史の枝分かれが可能になる
  54. 54. ブランチとは それぞれのブランチで並行して開発できる ブランチ git branch ブランチの 作成 ブランチ (歴史を 枝分かれ させたもの)
  55. 55. ブランチとは ブランチはどの地点からでも作成できる
  56. 56. ブランチには 名前をつけることができる
  57. 57. ブランチの名前 デフォルトのブランチ名はmasterとなる 俺たち master
  58. 58. ブランチは 必要に応じて使い分けたい
  59. 59. ブランチの切り替え 今作業中のブランチをHEADという HEADは ここ
  60. 60. ブランチの切り替え 適宜ブランチの切り替え(HEADの移動)を行う チェックアウト git checkout ブランチの 切り替え HEADは ここ
  61. 61. 複数作ったブランチは 時が来たら統合しよう
  62. 62. 統合には2種類ある マージ リベース ブランチの統合 2つのブランチを・・・
  63. 63. 統合には2種類ある マージ リベース ブランチの統合 masterに統合したければ・・・ HEADは ここ HEADは ここ
  64. 64. 統合には2種類ある マージ リベース 合体させて1つにする つけかえて1つにする マージ git merge ブランチの 統合 マージコミット ※後述 リベース git rebase ブランチの 統合 歴史が書きかわる! ブランチの統合
  65. 65. 今説明した「マージ」 実は種類があるので 補足するよ
  66. 66. マージの種類 マージには種類がある(うち2つを紹介) fast-forward non-fast-forward 枝分かれ 元に 変更がない 枝分かれ 元に 変更がある
  67. 67. マージには種類がある(うち2つを紹介) fast-forward non-fast-forward マージの種類 そのまま くっつけ られる マージの記録 (マージコミット) を残す fast-forwardでも、--no-ffオプションで マージコミットが作れる(作ると後々分かりやすい)
  68. 68. ブランチの使い方は ここまで
  69. 69. あとはもう3つ程 よく使うコマンドを 知っておこう
  70. 70. 歴史の確認 ログ git log コミットの ログを確認 コマンドのオプションにより表示方法が違う
  71. 71. 歴史の確認 ログ git log コミットの ログを確認 コマンドのオプションにより表示方法が違う 作者 日付 コミットコメント ハッシュ値
  72. 72. 差分の確認 差分 git diff コミット同士の 差分を確認 コマンドのオプションにより表示方法が違う
  73. 73. 差分の確認 コマンドのオプションにより表示方法が違う 削除分 追加分 差分 git diff コミット同士の 差分を確認
  74. 74. タグ git tag 歴史上のある 地点に 名前を付与 • 歴史上のある地点に戻れる 1.2.5デス 歴史の名前付け
  75. 75. コミットに付与される一意なハッシュ値で 歴史を行き来することも可能だけど 歴史の名前付け ちょっと分かりづらい
  76. 76. アジェンダ Gitとは Gitの基本操作 Git初心者がやりがちなこと Gitで困ったときのTIPs Gitの勉強方法
  77. 77. 使い始めの頃に ありがちなことを 3つ紹介するので 気をつけよう
  78. 78. ①余計なものまでコミット Eclipse固有の .classpathファイル! 私はNetBeans使い だからいらないわよー JARは自分で作るから pushしなくていいぞー ログ共有して どうするつもりなんやー
  79. 79. ①解決策 .gitignoreファイルを作る 記載したファイルがコミット対象から外れる! Gitリポジトリを作ったらまず用意しよう
  80. 80. ①解決策 https://github.com/github/gitignore を参考にしてみよう リポジトリ直下に言語別テンプレートがあり (Java.gitignore, Gradle.gitignore, Scala.gitignore…) Globalディレクトリ配下に IDEやエディタ別テンプレートがある (Eclipse.gitignore, Emacs.gitignore, JetBrains.gitignore NetBeans.gitignore,Vim.gitignore…)
  81. 81. ②GitとGitHubを混同 最近Gitに登録したよ 🐱🐙 SVNからGitHubに 移行したよ
  82. 82. ②解決策 GitとGitHubは別物であると知る GitHubは、Gitを使った ソフトウェア開発プロジェクトの ための共有ウェブサービスを指す! (Wikipedia) 同様のサービスにGitLab, BitBucketなどがある
  83. 83. ③コンフリクト恐怖症 Hoge.javaの30行目編集! Hoge.javaの15行目以降に 5行追加! 他の人の変更をマージしよう
  84. 84. ③コンフリクト恐怖症 Hoge.javaの30行目編集! Hoge.javaの15行目以降に 5行追加! 他の人の変更をマージしよう !!!
  85. 85. ③コンフリクト恐怖症 Hoge.javaの30行目編集! Hoge.javaの15行目以降に 5行追加! 他の人の変更をマージしよう う、うわあああああああ コンフリクト! コンパイルエラー! 全部Gitのせいだもう嫌
  86. 86. ③解決策 落ち着いて該当箇所を探す ↓目印はこれ! <<<<<<<< >>>>>>>> IDEとかなら赤くなって教えてくれることもある
  87. 87. ③解決策詳細
  88. 88. ③解決策詳細 自分がした変更(ローカル) マージしようとした変更 ブランチ名 ゆっくり考えれば出来るはず
  89. 89. アジェンダ Gitとは Gitの基本操作 Git初心者がやりがちなこと Gitで困ったときのTIPs Gitの勉強方法
  90. 90. 「あれ、間違えた!?」 という時使えるコマンドを 5つ紹介するので 困ったら思い出してね
  91. 91. ①予期せぬコンフリクト! 直前(実施中)のマージを取り消そう 慌てて失敗するくらいなら一旦マージ前の状態に戻そう 必要な確認・心の準備をした後落ち着いて再度マージしよう git merge --abort >>>>> <<<<<👋 👋
  92. 92. ②間違ってコミット! コミットを打ち消そう コミットを打ち消したことを記録する (リバートコミットを作成) コミットを打ち消したことを記録しない (完全なる抹消なので要注意) pushしたあとのresetは危険なので避けよう git revert git reset
  93. 93. ③間違ったコミット内容! 直前のコミットを編集しよう コミット対象ファイルの追加/削除 コミット内容やコメントの変更 などができる pushしたあとの編集は危険なので避けよう git commit --amend
  94. 94. ④間違ってadd / 編集! どうしたら戻せるか確認しよう (戻し方は前半で説明しましたが) 実はGitがちゃんと教えてくれるので大丈夫 git status ?
  95. 95. ④間違ってadd / 編集!
  96. 96. ④間違ってadd / 編集! ステージ済→編集済(ステージ前) 編集済(ステージ前)→編集前 ↑ステージ済 ↑編集済(ステージ前) ←Git管理前
  97. 97. ⑤消えたぁぁぁぁぁぁ 最後の望みにかけよう・・・ 実はさっき危険と言ったresetをしても これを使うと復活できたりする ただしこれでログがとれるのはGCされるまで なのでいつ消えるかは分からない git reflog
  98. 98. 困ったとき1番危険なのは 慌ててよく分からないまま 操作を続けること!
  99. 99. 落ち着いて正しい方法を 考えて解決していこう
  100. 100. アジェンダ Gitとは Gitの基本操作 Git初心者がやりがちなこと Gitで困ったときのTIPs Gitの勉強方法
  101. 101. さぁここまで来れば Gitは何となく分かった 気がする…? すぐにでも使えそう…?
  102. 102. でも
  103. 103. 実際手を動かすと 迷子になるかも 自分がどこで何をしているのか 分からなくなったりする
  104. 104. イメージ大事 今自分がしようとしていること 使おうとしているコマンドの意味 が、深く考えなくても 分かるようになるとよい 前半で紹介したようなフローが 頭の中で自然と描けるようになろう
  105. 105. 私のオススメ 勉強アイテムを 1つだけ伝えたい!
  106. 106. オススメ本(無料) https://progit-ja.github.io/ 最初の方だけでも 読んでみて!
  107. 107. とは言え 理解の仕方は人それぞれ
  108. 108. 大事なのは
  109. 109. IDE コマンド ブラウザ 自分が使いやすいと思う 方法を試してみること! 何を使うも自由 みんなちがって、みんないい
  110. 110. 説明はこれでおしまい! 最後に
  111. 111. まとめ Gitを使って楽しく開発しよう! 始めるにあたって・・・ よく分からんなーと言う方は 全体を捉えることから始めよう 困っても元に戻せるので 安心してまずは使い倒そう(油断は禁物) 自分に合った方法で習得しよう
  112. 112. Thank you
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×