Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Git -研究室ミーティング2023/12/1資料-
Search
usuyuki
December 01, 2023
Education
0
490
Git -研究室ミーティング2023/12/1資料-
大学の研究室ミーティングで発表担当になったとき、Gitを紹介することにしました。その際に用いた資料の外部公開版です。
(実際に使用したスライドから個人情報、スライドテーマ部分を改変した版)
usuyuki
December 01, 2023
Tweet
Share
More Decks by usuyuki
See All by usuyuki
毎年殺されるPHPとは何か
usuyuki
0
150
新卒1ヶ月半の邁進と変化
usuyuki
1
510
5分で理解するWebAssemblyのWebの外の話 PHPはマイコンの夢を見るか?
usuyuki
3
600
非公式内定者懇親会 LT たのしい企業理念クイズ!
usuyuki
0
610
技育展2023 ブロック予選関東① かどで日記
usuyuki
0
630
サポーターズエンジニア1on1面談イベント10月自己紹介
usuyuki
0
1.6k
U-lab定期LT10月 古代技術と現代技術の融合VSCodeVimのススメ
usuyuki
0
1.2k
PHPerと就活
usuyuki
0
1.2k
技育CAMP vol.5 発表スライド(うすゆき_むすびねる)
usuyuki
0
1.1k
Other Decks in Education
See All in Education
LLMs for Social Simulation: Progress, Opportunities and Challenges
wingnus
1
100
Kindleストアで本を探すことの善悪 #Izumo Developers' Guild 第1回 LT大会
totodo713
0
130
勉強したらどうなるの?
mineo_matsuya
10
6.5k
Introduction - Lecture 1 - Web Technologies (1019888BNR)
signer
PRO
0
4.9k
老人会? いえ、技術継承です @ builderscon 2024 LT
s3i7h
0
110
Ch2_-_Partie_3.pdf
bernhardsvt
0
100
Human Perception and Cognition - Lecture 4 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
710
Web Architectures - Lecture 2 - Web Technologies (1019888BNR)
signer
PRO
0
2.7k
1106
cbtlibrary
0
420
東工大 traP Kaggle班 機械学習講習会 2024
abap34
2
320
"数学" をプログラミングしてもらう際に気をつけていること / Key Considerations When Programming "Mathematics"
guvalif
0
570
小学生にスクラムを試してみた件~中学受検までの100週間の舞台裏~
ukky86
0
340
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
900
How GitHub (no longer) Works
holman
310
140k
Building Adaptive Systems
keathley
38
2.3k
Happy Clients
brianwarren
98
6.7k
The World Runs on Bad Software
bkeepers
PRO
65
11k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Building Your Own Lightsaber
phodgson
103
6.1k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Optimizing for Happiness
mojombo
376
70k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Practical Orchestrator
shlominoach
186
10k
Speed Design
sergeychernyshev
25
620
Transcript
宇都宮大学 工学部 4年 usuyuki
研究室ミーティング 12/1 2023/12/1 2
研究室ミーティング 12/1 2023/12/1 3
研究室ミーティング 12/1 2023/12/1 4 2023/12/1 研究室ミーティング 12/1 4 意義 Gitを使うことでの旨みを知る
Gitの基本的な使用方法を知る 本発表の目的 研究体験の向上へ
研究室ミーティング 12/1 2023/12/1 5 2023/12/1 研究室ミーティング 12/1 5 意義 Gitとは
分散バージョン管理システム
研究室ミーティング 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とは
研究室ミーティング 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とは
研究室ミーティング 12/1 2023/12/1 8 2023/12/1 研究室ミーティング 12/1 8 研究日誌でのGitとの向き合い方、あってる? 研究日誌もGitで管理されている
研究室ミーティング 12/1 2023/12/1 9 2023/12/1 研究室ミーティング 12/1 9 研究日誌でのGitとの向き合い方、あってる? •
空白1つ消してコミット • 1行だけ書いてコミット 普通に保存する感覚でcommitしてませんか?
研究室ミーティング 12/1 2023/12/1 10 2023/12/1 研究室ミーティング 12/1 10 Gitを理解するモチベーション 開発体験が様変わりする
様々な場所で役立つ (就職にも有利) 失敗が怖くなくなる バックアップの呪縛から開放される 趣味の開発から研究、論文執筆まで 就業形インターンではGit使える前提が多い GitHub選考通りやすくなる
研究室ミーティング 12/1 2023/12/1 11 2023/12/1 研究室ミーティング 12/1 11 Gitを理解するモチベーション 一度手にしたらやめられない便利さ
「Gitは文明」 個人の感想
研究室ミーティング 12/1 2023/12/1 12
研究室ミーティング 12/1 2023/12/1 13 2023/12/1 研究室ミーティング 12/1 13 Gitができること 最初に、Gitができることを説明
(普段の使い方は後ほど)
研究室ミーティング 12/1 2023/12/1 14 2023/12/1 研究室ミーティング 12/1 14 Gitができること 先に結論
プログラム開発に時間軸を導入 共同作業での事故防止
研究室ミーティング 12/1 2023/12/1 15 2023/12/1 研究室ミーティング 12/1 15 Gitができること プログラム開発に時間軸を導入
時間軸の移動
研究室ミーティング 12/1 2023/12/1 16 2023/12/1 研究室ミーティング 12/1 16 時間軸の移動 Gitのコミット
≈ ゲームにおけるセーブ 新しい機能XXを追加 バグYYを修正 新しい機能ZZを追加 master
研究室ミーティング 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
研究室ミーティング 12/1 2023/12/1 18 2023/12/1 研究室ミーティング 12/1 18 時間軸の移動 研究日誌のgit
log
研究室ミーティング 12/1 2023/12/1 19 2023/12/1 研究室ミーティング 12/1 19 こんな時間移動ができる! 特定の位置との比較
このコミットとこのコミット、どこが変わったの? git diff ブランチ単位での比較、改行無視などいろいろできる
研究室ミーティング 12/1 2023/12/1 20 2023/12/1 研究室ミーティング 12/1 20 こんな時間移動ができる! この行の変更、いつ誰がした?
このパラメータ、なんでこの値にしたんだっけ?
研究室ミーティング 12/1 2023/12/1 21 2023/12/1 研究室ミーティング 12/1 21 こんな時間移動ができる! 過去の設定ファイルを現代に召喚
2年前のあの日の設定ファイルを蘇らせたい…… git checkout commit_hash --- file_path
研究室ミーティング 12/1 2023/12/1 22 2023/12/1 研究室ミーティング 12/1 22 こんな時間移動ができる! 過去の設定ファイルを現代に召喚
2年前のあの日の設定ファイルを蘇らせたい…… git checkout commit_hash --- file_path
研究室ミーティング 12/1 2023/12/1 23 2023/12/1 研究室ミーティング 12/1 23 こんな時間移動ができる! 特定のコミットまでやり直す
新しく機能追加したけど、やっぱりやめたい 「その先に」の章では、過去改変についても紹介 git reset git revert
研究室ミーティング 12/1 2023/12/1 24 2023/12/1 研究室ミーティング 12/1 24 時間移動のために… こんな便利なGitですが……
これはcommitあってのもの
研究室ミーティング 12/1 2023/12/1 25 2023/12/1 研究室ミーティング 12/1 25 時間移動のために… コミットメッセージとコミット単位が大事
研究室ミーティング 12/1 2023/12/1 26 2023/12/1 研究室ミーティング 12/1 26 時間移動のために… prefixつけると見返しやすい
commitを積む = コードの物語を紡いでいく
研究室ミーティング 12/1 2023/12/1 27 2023/12/1 研究室ミーティング 12/1 27 Gitができること プログラム開発に時間軸を導入
世界線の変更
研究室ミーティング 12/1 2023/12/1 28 2023/12/1 研究室ミーティング 12/1 28 世界線の変更 Gitのブランチ
≈ タイムリープものにおける世界線 新しい機能XXの interface追加 mainブランチ 新しい機能XXの メソッド追加 新しい機能XXの テスト追加 feat/xxブランチ
研究室ミーティング 12/1 2023/12/1 29 2023/12/1 研究室ミーティング 12/1 29 未来の確定 機能をまとまった単位で用意して、mainにマージ
新しい機能XXの interface追加 mainブランチ 新しい機能XXの メソッド追加 Merge 新しい機能XXの テスト追加 feat/xxブランチ
研究室ミーティング 12/1 2023/12/1 30 2023/12/1 研究室ミーティング 12/1 30 研究での実例 ライブラリを用いた
多言語対応 GUIのレイアウト 仮組み実装 GitHub Actionsによる 自動ビルド実装 feat/base-styleブランチ feat/i18nブランチ feat/releaseブランチ
研究室ミーティング 12/1 2023/12/1 31 2023/12/1 研究室ミーティング 12/1 31 Gitができること 共同作業での事故防止
Pull Request(GitHubの機能)
研究室ミーティング 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ブランチ
研究室ミーティング 12/1 2023/12/1 33 2023/12/1 研究室ミーティング 12/1 33 Pull Request
実際の企業での使用例
研究室ミーティング 12/1 2023/12/1 34 2023/12/1 研究室ミーティング 12/1 34 Pull Request
実際の企業での使用例
研究室ミーティング 12/1 2023/12/1 35 2023/12/1 研究室ミーティング 12/1 35 Gitができること 共同作業での事故防止
コンフリクト解消
研究室ミーティング 12/1 2023/12/1 36 2023/12/1 研究室ミーティング 12/1 36 コンフリクト 機能をまとまった単位で用意して、mainにマージ
新しい機能XXの interface追加 mainブランチ 新しい機能XXの メソッド追加 Merge 新しい機能XXの テスト追加 feat/xxブランチ fix/yyブランチ Merge
研究室ミーティング 12/1 2023/12/1 37
研究室ミーティング 12/1 2023/12/1 38 2023/12/1 研究室ミーティング 12/1 38 研究日誌の場合 まとまった単位でコミット
その日の変更全体など
研究室ミーティング 12/1 2023/12/1 39 2023/12/1 研究室ミーティング 12/1 39 4つのステップ 単語だけでは分かりにくいので
実際の操作をデモする untrack stage commit remote
研究室ミーティング 12/1 2023/12/1 40 2023/12/1 研究室ミーティング 12/1 40 ブランチ・PR・マージ 研究日誌では使わないが、共同開発では必須
研究室ミーティング 12/1 2023/12/1 41
研究室ミーティング 12/1 2023/12/1 42 2023/12/1 研究室ミーティング 12/1 42 Gitでできることは他にも様々 •
commit履歴の一部を改変(rebase) • 複数のcommitを1つに合体(squash) • 特定のコミットを他のブランチで使う(cherry-pick) • git resetを取り消す(reflog, reset)
研究室ミーティング 12/1 2023/12/1 43 2023/12/1 研究室ミーティング 12/1 43 GitHubを用いた快適開発 ブランチ切って機能追加して
PR→レビュー・CI→マージ・CD マージ前にコードの解析(CI) 自動でアプリをビルド(CD)
研究室ミーティング 12/1 2023/12/1 44 2023/12/1 研究室ミーティング 12/1 44 GitHubに草を生やす
研究室ミーティング 12/1 2023/12/1 45 2023/12/1 研究室ミーティング 12/1 45 終わり Gitを使って快適安全な開発・研究を!!!
書籍「独習Git(443ページ)」など数十分の発表では説明できないボリューム