Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Git -研究室ミーティング2023/12/1資料-

usuyuki
December 01, 2023

Git -研究室ミーティング2023/12/1資料-

大学の研究室ミーティングで発表担当になったとき、Gitを紹介することにしました。その際に用いた資料の外部公開版です。
(実際に使用したスライドから個人情報、スライドテーマ部分を改変した版)

usuyuki

December 01, 2023
Tweet

More Decks by usuyuki

Other Decks in Education

Transcript

  1. 宇都宮大学 工学部 4年
    usuyuki

    View full-size slide

  2. 研究室ミーティング 12/1
    2023/12/1 2

    View full-size slide

  3. 研究室ミーティング 12/1
    2023/12/1 3

    View full-size slide

  4. 研究室ミーティング 12/1
    2023/12/1 4
    2023/12/1
    研究室ミーティング 12/1 4
    意義
    Gitを使うことでの旨みを知る
    Gitの基本的な使用方法を知る
    本発表の目的
    研究体験の向上へ

    View full-size slide

  5. 研究室ミーティング 12/1
    2023/12/1 5
    2023/12/1
    研究室ミーティング 12/1 5
    意義
    Gitとは
    分散バージョン管理システム

    View full-size slide

  6. 研究室ミーティング 12/1
    2023/12/1 6
    2023/12/1 6
    意義
    分散バージョン管理システム
    作者 : Linus
    Torvalds
    Linux Kernelの開発で使用するために開発
    (BitKeeper問題)
    Linus Torvaldsの写真
    著作者:Krd CC 表示-継承 4.0
    https://commons.wikimedia.org/wiki/File:LinuxCon_Europe_Lin
    us_Torvalds_03.jpgによる
    Gitとは

    View full-size slide

  7. 研究室ミーティング 12/1
    2023/12/1 7
    2023/12/1
    研究室ミーティング 12/1 7
    意義
    分散バージョン管理システム
    GitHubはGitリポジトリの
    ホスティングプラットフォーム
    作者 : Linus
    Torvalds
    Linux Kernelの開発で使用するために開発
    (BitKeeper問題)
    Linus Torvaldsの写真
    著作者:Krd CC 表示-継承 4.0
    https://commons.wikimedia.org/wiki/File:LinuxCon_Europe_Lin
    us_Torvalds_03.jpgによる
    Gitとは

    View full-size slide

  8. 研究室ミーティング 12/1
    2023/12/1 8
    2023/12/1
    研究室ミーティング 12/1 8
    研究日誌でのGitとの向き合い方、あってる?
    研究日誌もGitで管理されている

    View full-size slide

  9. 研究室ミーティング 12/1
    2023/12/1 9
    2023/12/1
    研究室ミーティング 12/1 9
    研究日誌でのGitとの向き合い方、あってる?
    • 空白1つ消してコミット
    • 1行だけ書いてコミット
    普通に保存する感覚でcommitしてませんか?

    View full-size slide

  10. 研究室ミーティング 12/1
    2023/12/1 10
    2023/12/1
    研究室ミーティング 12/1 10
    Gitを理解するモチベーション
    開発体験が様変わりする
    様々な場所で役立つ
    (就職にも有利)
    失敗が怖くなくなる
    バックアップの呪縛から開放される
    趣味の開発から研究、論文執筆まで
    就業形インターンではGit使える前提が多い
    GitHub選考通りやすくなる

    View full-size slide

  11. 研究室ミーティング 12/1
    2023/12/1 11
    2023/12/1
    研究室ミーティング 12/1 11
    Gitを理解するモチベーション
    一度手にしたらやめられない便利さ
    「Gitは文明」
    個人の感想

    View full-size slide

  12. 研究室ミーティング 12/1
    2023/12/1 12

    View full-size slide

  13. 研究室ミーティング 12/1
    2023/12/1 13
    2023/12/1
    研究室ミーティング 12/1 13
    Gitができること
    最初に、Gitができることを説明
    (普段の使い方は後ほど)

    View full-size slide

  14. 研究室ミーティング 12/1
    2023/12/1 14
    2023/12/1
    研究室ミーティング 12/1 14
    Gitができること
    先に結論
    プログラム開発に時間軸を導入
    共同作業での事故防止

    View full-size slide

  15. 研究室ミーティング 12/1
    2023/12/1 15
    2023/12/1
    研究室ミーティング 12/1 15
    Gitができること
    プログラム開発に時間軸を導入
    時間軸の移動

    View full-size slide

  16. 研究室ミーティング 12/1
    2023/12/1 16
    2023/12/1
    研究室ミーティング 12/1 16
    時間軸の移動
    Gitのコミット ≈ ゲームにおけるセーブ
    新しい機能XXを追加 バグYYを修正 新しい機能ZZを追加
    master

    View full-size slide

  17. 研究室ミーティング 12/1
    2023/12/1 17
    2023/12/1
    研究室ミーティング 12/1 17
    時間軸の移動
    Gitのコミット ≈ ゲームにおけるセーブ
    新しい機能XXを追加 バグYYを修正 新しい機能ZZを追加
    hash
    branch
    commit
    message
    master
    HEAD
    いつ誰がどこを変更したかも記録される
    7b07422b
    ebbf8a85
    a74e9ce9

    View full-size slide

  18. 研究室ミーティング 12/1
    2023/12/1 18
    2023/12/1
    研究室ミーティング 12/1 18
    時間軸の移動
    研究日誌のgit log

    View full-size slide

  19. 研究室ミーティング 12/1
    2023/12/1 19
    2023/12/1
    研究室ミーティング 12/1 19
    こんな時間移動ができる!
    特定の位置との比較
    このコミットとこのコミット、どこが変わったの?
    git diff
    ブランチ単位での比較、改行無視などいろいろできる

    View full-size slide

  20. 研究室ミーティング 12/1
    2023/12/1 20
    2023/12/1
    研究室ミーティング 12/1 20
    こんな時間移動ができる!
    この行の変更、いつ誰がした?
    このパラメータ、なんでこの値にしたんだっけ?

    View full-size slide

  21. 研究室ミーティング 12/1
    2023/12/1 21
    2023/12/1
    研究室ミーティング 12/1 21
    こんな時間移動ができる!
    過去の設定ファイルを現代に召喚
    2年前のあの日の設定ファイルを蘇らせたい……
    git checkout commit_hash --- file_path

    View full-size slide

  22. 研究室ミーティング 12/1
    2023/12/1 22
    2023/12/1
    研究室ミーティング 12/1 22
    こんな時間移動ができる!
    過去の設定ファイルを現代に召喚
    2年前のあの日の設定ファイルを蘇らせたい……
    git checkout commit_hash --- file_path

    View full-size slide

  23. 研究室ミーティング 12/1
    2023/12/1 23
    2023/12/1
    研究室ミーティング 12/1 23
    こんな時間移動ができる!
    特定のコミットまでやり直す
    新しく機能追加したけど、やっぱりやめたい
    「その先に」の章では、過去改変についても紹介
    git reset
    git revert

    View full-size slide

  24. 研究室ミーティング 12/1
    2023/12/1 24
    2023/12/1
    研究室ミーティング 12/1 24
    時間移動のために…
    こんな便利なGitですが……
    これはcommitあってのもの

    View full-size slide

  25. 研究室ミーティング 12/1
    2023/12/1 25
    2023/12/1
    研究室ミーティング 12/1 25
    時間移動のために…
    コミットメッセージとコミット単位が大事

    View full-size slide

  26. 研究室ミーティング 12/1
    2023/12/1 26
    2023/12/1
    研究室ミーティング 12/1 26
    時間移動のために…
    prefixつけると見返しやすい
    commitを積む = コードの物語を紡いでいく

    View full-size slide

  27. 研究室ミーティング 12/1
    2023/12/1 27
    2023/12/1
    研究室ミーティング 12/1 27
    Gitができること
    プログラム開発に時間軸を導入
    世界線の変更

    View full-size slide

  28. 研究室ミーティング 12/1
    2023/12/1 28
    2023/12/1
    研究室ミーティング 12/1 28
    世界線の変更
    Gitのブランチ ≈ タイムリープものにおける世界線
    新しい機能XXの
    interface追加
    mainブランチ
    新しい機能XXの
    メソッド追加
    新しい機能XXの
    テスト追加
    feat/xxブランチ

    View full-size slide

  29. 研究室ミーティング 12/1
    2023/12/1 29
    2023/12/1
    研究室ミーティング 12/1 29
    未来の確定
    機能をまとまった単位で用意して、mainにマージ
    新しい機能XXの
    interface追加
    mainブランチ
    新しい機能XXの
    メソッド追加
    Merge
    新しい機能XXの
    テスト追加
    feat/xxブランチ

    View full-size slide

  30. 研究室ミーティング 12/1
    2023/12/1 30
    2023/12/1
    研究室ミーティング 12/1 30
    研究での実例
    ライブラリを用いた
    多言語対応
    GUIのレイアウト
    仮組み実装
    GitHub Actionsによる
    自動ビルド実装
    feat/base-styleブランチ
    feat/i18nブランチ
    feat/releaseブランチ

    View full-size slide

  31. 研究室ミーティング 12/1
    2023/12/1 31
    2023/12/1
    研究室ミーティング 12/1 31
    Gitができること
    共同作業での事故防止
    Pull Request(GitHubの機能)

    View full-size slide

  32. 研究室ミーティング 12/1
    2023/12/1 32
    2023/12/1
    研究室ミーティング 12/1 32
    Pull Request
    Pull Request(PR) : メインのブランチへのマージ依頼
    新しい機能XXの
    interface追加
    mainブランチ
    新しい機能XXの
    メソッド追加
    Merge
    新しい機能XXの
    テスト追加
    feat/xxブランチ

    View full-size slide

  33. 研究室ミーティング 12/1
    2023/12/1 33
    2023/12/1
    研究室ミーティング 12/1 33
    Pull Request
    実際の企業での使用例

    View full-size slide

  34. 研究室ミーティング 12/1
    2023/12/1 34
    2023/12/1
    研究室ミーティング 12/1 34
    Pull Request
    実際の企業での使用例

    View full-size slide

  35. 研究室ミーティング 12/1
    2023/12/1 35
    2023/12/1
    研究室ミーティング 12/1 35
    Gitができること
    共同作業での事故防止
    コンフリクト解消

    View full-size slide

  36. 研究室ミーティング 12/1
    2023/12/1 36
    2023/12/1
    研究室ミーティング 12/1 36
    コンフリクト
    機能をまとまった単位で用意して、mainにマージ
    新しい機能XXの
    interface追加
    mainブランチ
    新しい機能XXの
    メソッド追加
    Merge
    新しい機能XXの
    テスト追加
    feat/xxブランチ
    fix/yyブランチ
    Merge

    View full-size slide

  37. 研究室ミーティング 12/1
    2023/12/1 37

    View full-size slide

  38. 研究室ミーティング 12/1
    2023/12/1 38
    2023/12/1
    研究室ミーティング 12/1 38
    研究日誌の場合
    まとまった単位でコミット
    その日の変更全体など

    View full-size slide

  39. 研究室ミーティング 12/1
    2023/12/1 39
    2023/12/1
    研究室ミーティング 12/1 39
    4つのステップ
    単語だけでは分かりにくいので
    実際の操作をデモする
    untrack stage commit remote

    View full-size slide

  40. 研究室ミーティング 12/1
    2023/12/1 40
    2023/12/1
    研究室ミーティング 12/1 40
    ブランチ・PR・マージ
    研究日誌では使わないが、共同開発では必須

    View full-size slide

  41. 研究室ミーティング 12/1
    2023/12/1 41

    View full-size slide

  42. 研究室ミーティング 12/1
    2023/12/1 42
    2023/12/1
    研究室ミーティング 12/1 42
    Gitでできることは他にも様々
    • commit履歴の一部を改変(rebase)
    • 複数のcommitを1つに合体(squash)
    • 特定のコミットを他のブランチで使う(cherry-pick)
    • git resetを取り消す(reflog, reset)

    View full-size slide

  43. 研究室ミーティング 12/1
    2023/12/1 43
    2023/12/1
    研究室ミーティング 12/1 43
    GitHubを用いた快適開発
    ブランチ切って機能追加して
    PR→レビュー・CI→マージ・CD
    マージ前にコードの解析(CI) 自動でアプリをビルド(CD)

    View full-size slide

  44. 研究室ミーティング 12/1
    2023/12/1 44
    2023/12/1
    研究室ミーティング 12/1 44
    GitHubに草を生やす

    View full-size slide

  45. 研究室ミーティング 12/1
    2023/12/1 45
    2023/12/1
    研究室ミーティング 12/1 45
    終わり
    Gitを使って快適安全な開発・研究を!!!
    書籍「独習Git(443ページ)」など数十分の発表では説明できないボリューム

    View full-size slide