Successfully reported this slideshow.
Your SlideShare is downloading. ×

超初心者のためのGitマニュアル

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 73 Ad

超初心者のためのGitマニュアル

Download to read offline

「超初心者のためのGitマニュアル」

研究室の後輩にGitの説明をするために作った資料です
・Gitとは?
・Gitで何が出来るの?
 ・もしポケモンの世界にGitがあったら?
 ・Gitを使って個人作業をするならどう使う?
 ・Gitを使ってチームで作業をするならどう使う?
・初心者がGitで覚えた方がいい用語
・Gitを使ってみたいけど,どんな操作をしたら練習になる?
といったところをまとめています

※著作権等問題があればすぐ消すので,連絡ください

「超初心者のためのGitマニュアル」

研究室の後輩にGitの説明をするために作った資料です
・Gitとは?
・Gitで何が出来るの?
 ・もしポケモンの世界にGitがあったら?
 ・Gitを使って個人作業をするならどう使う?
 ・Gitを使ってチームで作業をするならどう使う?
・初心者がGitで覚えた方がいい用語
・Gitを使ってみたいけど,どんな操作をしたら練習になる?
といったところをまとめています

※著作権等問題があればすぐ消すので,連絡ください

Advertisement
Advertisement

More Related Content

Slideshows for you (19)

Similar to 超初心者のためのGitマニュアル (20)

Advertisement

Recently uploaded (20)

超初心者のためのGitマニュアル

  1. 1. 超初心者のための Gitマニュアル
  2. 2. /18/74 この資料の目的 この講習が終わったときに,  Gitを使うとどんないいことがあるかわかる  Gitの基本的な用語がわかる  Gitの基本的な使い方がわかる・できる この講習のあとで,  Gitのしくみがわかる  チームで作業するときのGitの良い使い方がわかる 2
  3. 3. /18/74 Contents 3 • Gitとは • Gitで何が出来る?~Gitのある生活~ • 覚えてほしいGitの用語 • やってみよう! • 最後に難しい話
  4. 4. /18/74 git とは git は、プログラムのソースコードなどの変更履歴を記録・追跡,差分を確 認するためのバージョン管理システム.変更前の状態の復元や,変更の競 合の操作が容易.Linuxカーネルのソースコード管理に用いるためにリーナ ス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで 採用されている.Linuxカーネルのような巨大プロジェクトにも対応できる ように、動作速度に重点が置かれている. Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジト リ(過去のソースコードが全て格納されている格納庫.隠しファイル.git) の完全な複製が作られる.したがって、ネットワークにアクセスできない などの理由で中心リポジトリ(リモートサーバ上の共有リポジトリ)にア クセスできない環境でも、履歴の調査や変更の記録といったほとんどの作 業を行うことができる. (2017/9/7 現在 Wikipedia https://ja.wikipedia.org/wiki/Git) 4
  5. 5. /18/74 簡単に言うと, ①ファイルのセーブポイントを作成できる ②履歴が全て残るので前のセーブポイントを参照・復元出来る ③クラウドへの同期は手動 ④セーブポイントは分岐が可能 5/7 13:00 5/8 11:00 5/7 14:00 5/9 21:00 5/9 21:00 セーブポイント 前の状態に 戻れる! 分岐もできる! 手動で同期 5
  6. 6. Gitのある生活 重要度:☆☆☆☆★ 難易度:☆☆★★★
  7. 7. Gitのある生活 ~ポケモン編~
  8. 8. /18/74 ゲーム開始 オダマキ博士(Dr. Odamaki) Gitのある生活~ポケモン編~ 8
  9. 9. /18/74 ゲーム開始 はじめの街 きりのいいところでセーブ Gitだとセーブの履歴が残る Gitのある生活~ポケモン編~ 9
  10. 10. /18/74 ゲーム開始 はじめの街 最後の街 Gitのある生活~ポケモン編~ 10
  11. 11. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! Gitのある生活~ポケモン編~ 11
  12. 12. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! うわっ…私のレベル、 低すぎ…? 無料5分で、適正レベルや チャンピオン基礎能力が分かる 「ポケモン姓名鑑定」。 受けた人は40万人を突破! CHECK! >>あなたの適正レベルは? Gitのある生活~ポケモン編~ 12
  13. 13. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! ①戻る Gitのある生活~ポケモン編~ 13
  14. 14. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! ①戻る ②分岐 Gitのある生活~ポケモン編~ 14
  15. 15. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! ①戻る レベル上げ! ②分岐 Gitのある生活~ポケモン編~ 15
  16. 16. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! ①戻る レベル上げ! ③取り込む ②分岐 Gitのある生活~ポケモン編~ 16
  17. 17. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! ①戻る レベル上げ! ③取り込む うわっ…私のレベル、 低すぎ…? 無料5分で、適正レベルや チャンピオン基礎能力が分かる 「ポケモン姓名鑑定」。 受けた人は40万人を突破! CHECK! >>あなたの適正レベルは? ②分岐 Gitのある生活~ポケモン編~ 17
  18. 18. /18/74 ゲーム開始 はじめの街 最後の街 ラスボス戦! ①戻る レベル上げ! ③取り込む うわっ…私のレベル、 低すぎ…? 無料5分で、適正レベルや チャンピオン基礎能力が分かる 「ポケモン姓名鑑定」。 受けた人は40万人を突破! CHECK! >>あなたの適正レベルは? ②分岐 Gitのある生活~ポケモン編~ 18 Gitを使えば,ラスボスもらくらく倒せる!
  19. 19. Gitのある生活 ~卒論編~
  20. 20. /18/74 Gitのある生活~卒論編~  Gitをつかって卒論のデータを管理します 20
  21. 21. /18/74 Gitのある生活~卒論編~  Gitのバックアップ機能を使うことでクラウド上に セーブデータを複製できます バックアップ 21
  22. 22. /18/74 Gitのある生活~卒論編~  PCが壊れてデータが全部消えてしまった... 22
  23. 23. /18/74 Gitのある生活~卒論編~  こんなときでもバックアップからデータを復元できます 復元 23
  24. 24. /18/74 Gitのある生活~卒論編~  途中でプログラムが動かなくなった時も 24
  25. 25. /18/74 Gitのある生活~卒論編~  セーブポイントを戻って分岐,そこから作業再開できます! 25
  26. 26. Gitのある生活 ~チームでの作業編~
  27. 27. /18/74 Gitのある生活~チームでの作業編~  ペンギン君とアザラシ君は分担してプログラムを書いています 27
  28. 28. /18/74 Gitのある生活~チームでの作業編~  まずは自分が作業するためのセーブポイントを分岐します ※同じセーブポイントで作業をすることは良くない 28
  29. 29. /18/74 Gitのある生活~チームでの作業編~  どちらも順調に作業を進めています 29
  30. 30. /18/74 Gitのある生活~チームでの作業編~  アザラシ君が作業を完了し,分岐元のセーブポイントに自分の作業 を取り込ませます. 30 取り込み
  31. 31. /18/74 Gitのある生活~チームでの作業編~  ペンギン君も作業が終了しました 31
  32. 32. /18/74 Gitのある生活~チームでの作業編~  アザラシ君の作業内容を取り込んで,バグがないことを確認します 32 取り込み
  33. 33. /18/74 Gitのある生活~チームでの作業編~  バグはありませんでした!分岐元のセーブポイントに作業内容を 取り込ませて作業終了です! 33 完成!
  34. 34. /18/74 おさらい:Gitでできること ①ファイルのセーブポイントを作成できる ②履歴が全て残るので前のセーブポイントを参照・復元出来る ③クラウドへの同期は手動 ④セーブポイントは分岐が可能 5/7 13:00 5/8 11:00 5/7 14:00 5/9 21:00 5/9 21:00 セーブポイント 前の状態に 戻れる! 分岐もできる! 手動で同期 34
  35. 35. /18/74 こんな人におすすめ  複雑なものを作っていて,定期的にバックアップが必要な人  プログラムにバグが出たりして,前の状態に戻したいときがある人  複数人で作業している人 そして,  ファイルのバージョン管理に苦労している人 https://backlog.com/ja/git-tutorial/intro/01/ 35
  36. 36. 覚えてほしいGitの用語 重要度:☆☆☆☆☆ 難易度:☆☆☆★★
  37. 37. /18/74 覚えてほしいGitの用語 これがもとのファイルです 37
  38. 38. /18/74 覚えてほしいGitの用語 どんどん書き進めていきます 38
  39. 39. /18/74 コミット(セーブポイントを作る) 区切りのいいところでセーブポイントを 作ることが出来ます. これをコミットといいます 指定したフォルダ上の全てのファイルが コミットの対象になります commit! 39
  40. 40. /18/74 アド(セーブするファイルを選択) コミットするファイルを選択することもできます この作業をアド(ステージング)と呼び, コミット前に必ずやる作業です だいたい全部アドしちゃいます commit! 40
  41. 41. /18/74 覚えてほしいGitの用語 どんどん書き進めてい きます 41
  42. 42. /18/74 覚えてほしいGitの用語 あ,この前変更した部分, 変更する前の方が都合がよかった... 42
  43. 43. /18/74 ブランチ(枝分かれさせる) そんなときはいったん前のファイルに戻って, 新しく別の枝を伸ばし, そこにコミット(セーブポイント)を作ることが出来ます commit!  コミット(セーブポイントを作る) 43
  44. 44. /18/74 チェックアウト(ブランチ間を移動) このそれぞれの枝のことをブランチと呼びます まんまですね ブランチA ブランチB また,作業しているブランチを移動することを チェックアウトと呼びます. 新しく作ったブランチに移動するときも, 元のブランチに戻るときもチェックアウトを使います.  コミット(セーブポイントを作る)  ブランチ(枝を作る)  チェックアウト(ブランチを移動する) 44
  45. 45. /18/74 覚えてほしいGitの用語 ブランチBの方で順調に作業を進めましたが, ブランチAでの作業内容も必要になってきました ブランチA ブランチB  コミット(セーブポイントを作る)  ブランチ(枝を作る)  チェックアウト(ブランチを移動する) 45
  46. 46. /18/74 マージ(別ブランチの内容を取り込む) そんなときはマージを使います 他のブランチの作業内容を自分のいるブランチに 取り込むことが出来ます 取り込んだ元のブランチは維持され, 内容が変わったり,消えたりすることは一切ありません マージ後には新しいコミット(マージコミット)が 生成されます ブランチA ブランチB  コミット(セーブポイントを作る)  ブランチ(枝を作る)  チェックアウト(ブランチを移動する)  マージ(別のブランチの作業内容を取り込む)merge! 46
  47. 47. /18/74 マージコンフリクト 47 別のブランチであるファイルの同じ行をそれぞれ別の内容に変更していると コンフリクト(競合)が発生する. 修正して,もう一度コミット マージ時にコンフリクト発生 1 OrigamiProject 2 Sakamoto Lab 3 <<<<<<< HEAD Matsunaga Lab Huruya Lab ======= Nakanishi Lab >>>>>>> branchB ブランチAはこう変更 1 OrigamiProject 2 Sakamoto Lab 3 Matsunaga Lab 4 Huruya Lab 1 OrigamiProject もとのファイル ブランチBはこう変更 1 OrigamiProject 2 Sakamoto Lab 3 Nakanishi Lab 手動で修正 1 OrigamiProject 2 Sakamoto Lab 3 Nakanishi Lab 4 Huruya Lab 必ずコンフリクト部分を 確認すること!
  48. 48. /18/74 リポジトリ このセーブファイルがおいてあるところを リポジトリ(レポジトリ)と呼びます リポジトリは ・あなたのPC上に作られるローカルリポジトリ ・クラウド上に作られるリモートリポジトリ の2種類があり,手動で同期をとります ローカル リポジトリ リモート リポジトリ ユーザーPC 作業 ディレクトリ ステージング エリア 手動で同期 48
  49. 49. /18/74 Tips:なぜ手動で同期? 寝ている間にiPhoneが勝手に同期される世界で私たち は暮らしていますが, Gitは自動で同期しません! 理由 • プッシュしない限りは好き勝手遊べる →ローカルで斬新な機能を作成,動かしたら全く動かない →ブランチごと放置.リモートへはプッシュしないので他の人 には影響なし • 電波環境が悪いところでも使える • 意味のあるセーブポイントが作成できる 49
  50. 50. /18/74 Gitで何が出来る? リモート リポジトリ ローカル リポジトリ ステージング エリア ディレクトリ ユーザーPC ローカル リポジトリ ステージング エリア ディレクトリ ユーザーPC 同期の仕方にも名前がついています ローカル→リモートへの同期をプッシュ, リモート→ローカルへの同期をフェッチといいます プッシュ フェッチ 50
  51. 51. /18/74 Gitで何が出来る? リモート リポジトリ ローカル リポジトリ ステージング エリア ディレクトリ ユーザーPC ローカル リポジトリ ステージング エリア ディレクトリ ユーザーPC 今までの話を合わせて,いくつか補足を入れるとこんな感じ ③プッシュ ④フェッチ ①アド ②コミット ⑤マージ ※実際はプル(フェッチ+マージ) をよく使う 51
  52. 52. /18/74 Gitのサービスを提供してくれている団体 Git自体はシステムの名称 実際にこのサービス(≒リモートリポジトリ)を提供しているのは GitHubとかGitLabとかです. (※リモートリポジトリは自分でたてることもできる) 今回使うのはGitLab GitHub GitHubの アイコンは 謎の生命体(かわいい) 53
  53. 53. /18/74 おぼえてほしいGitの用語 ・アド(コミット対象を選択) ・コミット(選択した変更点をセーブ) ・ブランチ(新しくセーブデータを枝分かれさせる) ・チェックアウト(ブランチを移動) ・プッシュ(ローカルリポジトリ→リモートリポジトリへ同期) ・フェッチ(リモートリポジトリ→ローカルリポジトリへ同期) ・マージ(ほかのブランチの変更点を取り込む) ・プル(フェッチ+マージ) 54
  54. 54. やってみよう! 重要度:☆☆☆☆☆ 難易度:☆☆☆☆★
  55. 55. /18/74 SourceTreeの簡単な使い方 56 ↓リポジトリの操作 ローカルのフォルダを開く (エクスプローラ/Finder) リモートのリポジトリを開く(ブラウザ) ※SourceTreeで見れるのはすべてローカルリポジトリ ブラウザで見れるのはすべてリモートリポジトリ ブランチ名をダブルクリックでチェックアウト ファイルステータス:どのファイルが変更されているか /どのファイルがアド(ステージング)されているか History:ローカルリポジトリの状況を確認
  56. 56. /18/74 今日の課題 1.プル 2.ブランチ&プッシュ 3.フェッチ&マージ 57
  57. 57. /18/74 課題①:プル 58 クラウド上でmasterブランチに1コミットを追加しました. それを自分のPC上のリポジトリ(ローカルリポジトリ)に反映させてください 自分のPC (ローカルリポジトリ) クラウド上 (リモートリポジトリ) プル origin/master master
  58. 58. /18/74 課題②:ブランチ作成&プッシュ 59 ①自分の名前のブランチを作成(mihonブランチを参考にして) ②”〇〇(自分の名前).txt”を作成 ③”member_list.txt”に自分の名前を追加 自分のPC (ローカルリポジトリ) mihon kato 終わったらコミット&プッシュ ③自分の名前を追加 ②ファイルを追加(中身はなくてOK) ①ブランチ作成
  59. 59. /18/74 課題③:マージ 60 自分のPC (ローカルリポジトリ) mihon kato ①mihonブランチを自分のブランチにマージ ②”member_list.txt”の名前の順番をGitが決められないのでコンフリクト ③コンフリクトを解消してコミット&プッシュ
  60. 60. 最後に難しい話 重要度:☆☆☆★★ 難易度:☆☆☆☆★
  61. 61. /18/74 この資料の目的 この講習が終わったときに,  Gitを使うとどんないいことがあるかわかる  Gitの基本的な用語がわかる  Gitの基本的な使い方がわかる・できる この講習のあとで,  Gitのしくみがわかる  チームで作業するときのGitの良い使い方がわかる 62 ここまで ここからの話は,分からなくてもOK! 知っておくことが大切 ここから
  62. 62. /18/74 Gitの操作方法 ざっくりと3種類の操作方法があります 1. コマンドラインで操作 2. GUIアプリケーションで操作 3. ブラウザ上で操作 真っ黒なターミナルにポチポチコマンドを打っていきます 慣れると一番便利 WindowsならGit for Windows Macならターミナルを使います 今回はSourceTreeを使います. 慣れるまでは一番使いやすい Visual Studio Codeとかもおすすめ 直接リモートリポジトリを扱える 逆にローカルでの作業は出来ないので, プッシュした内容を確認するときに使う 63
  63. 63. /18/74 コミットメッセージ コミットするときには簡単なコメントを付ける必要がありま す(コミットメッセージ) 64 今日はここまで 調子よかった なかなかうまくいかない 先生に怒られた 2020/5/8 2020/5/6 2020/5/4 2020/5/3
  64. 64. /18/74 コミットメッセージ コミットメッセージが分かりにくいと,あとからさかのぼる のが難しくなります 65 今日はここまで 調子よかった なかなかうまくいかない 先生に怒られた 2020/5/8 2020/5/6 2020/5/4 2020/5/3 探しているやつが どれかわからない...
  65. 65. /18/74 コミットメッセージ コミットメッセージはやったことを簡潔に書く! ※英語で書いてね 66 プログラム全体を作成 モーター駆動部分 モーター動作時のバグ取り 全体的に読みやすく整えた 2020/5/8 2020/5/6 2020/5/4 2020/5/3
  66. 66. /18/74 コミットメッセージ 先頭にやったことの種類を示すプレフィックスを つけると分かりやすい 67 feat: プログラム全体を作成 feat: モーター駆動部分 debug: モーター動作時のバグ取り refactor: 全体的に読みやすく整えた 2020/5/8 2020/5/6 2020/5/4 2020/5/3
  67. 67. /18/74 Gitのしくみ Gitは頭がよいので,指定したフォルダ上の全ファイルに対して, 前回との変更点を見つけそこだけを保存しています 赤→消したとところ 緑→増えたところ 前回のセーブポイント 今回のセーブポイント Gitの中心はこの「差分を取ってセーブポイントを作る」という考え方 68
  68. 68. /18/74 Gitとの相性 Gitと相性がいいもの:テキストベースのもの(差分が取れる) Gitと相性が良くないもの:テキストベースでないもの Gitと相性が悪いもの:テキストベースでない&容量が大きい ※リポジトリには容量制限がある場合がある pdf(.pdf), execution file(.exe), image(.png, .jpg),… Movie(.mp4), PowerPoint(.pptx),… Text(.txt, .md, .csv), Source code(.html, .tex, .c),… 69
  69. 69. /18/74 masterブランチ  なぜ自分の作業を分岐元のブランチ(masterブランチ)に いちいちマージするのか? 70 良い例 良くない例 master
  70. 70. /18/74 masterブランチ  こうするとmasterブランチは確実にバグがないことが分かる 71 良い例 良くない例 master どこが作業中か わからない →新しく作業を始めたいときにどこから分岐すればいいかわかりやすい
  71. 71. /18/74 役割に応じて わかりやすいブランチ名を付けるべし よく使われるbranch名の先頭文字 master, release, deploy:最新の安定版 develop, dev :最新の開発作業の変更 feature, feat :新しい機能開発 fix, hotfix :致命的バグの修正 dev/motor-control-method みたいな感じで名前を付け ると分かりやすい! ブランチ命名規則 72
  72. 72. /18/74 git の心構え 73 • 他人と共有する必要のないファイルはコミット・プッシュしない ※変更してないファイル,不必要なファイルなど • ログを消すような作業は極力控える • バグのあるコードはプッシュしない • こまめにフェッチorプルして最新の状態に同期しておく • コミットメッセージは他人に分かるようにわかりやすく端的に(先頭大文字, 基本的には英語で書くこと) • ソースコードなどでは他人が読んでも分かりやすく,修正に強いコードを書く ※詳しくはコーディングルール資料を参照 • コンフリクトを避けるために同一行を複数人で編集することはなるべく避ける. (ブランチごとに編集対象のファイルを変えるのが一番楽) • 分かるようになってから難しいことをする ※gitの仕組み等,難しい話は過去資料ver2に記載されている
  73. 73. /18/74 さいごに 74 さいごに, Gitを開発したリーナス・トーバルズ氏の名言を贈ります 「Gitを学ぶよい方法は、最初はあまり多くに手を出さずに 基本的なことだけを使い、自信が持てるようになった時に 別のことを行うことでしょう」 GitHub/GitLabでは開発者の権限を明確に設定することが出来ます. おそらく最初は致命的な作業(リポジトリ消去など)は出来ないよう 設定されているはずなので, 基本的なことからどんどん触って色々間違えるのが良いでしょう! それでは,楽しいGitライフを!

×