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
2025-08-06 社内勉強会 Gitを知る頃 / When You First Know Git
Search
Kentaro Abe
August 06, 2025
Programming
0
46
2025-08-06 社内勉強会 Gitを知る頃 / When You First Know Git
Kentaro Abe
August 06, 2025
Tweet
Share
More Decks by Kentaro Abe
See All by Kentaro Abe
2025-08-27 社内勉強会 ソフトウェアテストの基礎 / Basics of Software Testing
abekem
0
2
2025-07-02 社内勉強会 SQLに親しむ / Getting to Know SQL
abekem
0
50
2025-05-28 社内勉強会 SOLID原則ではじめるよりよい設計の第一歩 / The First Step to Better Software Design with SOLID Principles
abekem
0
47
2025-04-23 社内勉強会 デザインパターン概論 / Overview of Design Patterns
abekem
0
38
2025-03-26 社内勉強会 オブジェクト指向入門 第二部 / Introduction to Object-Oriented Part2
abekem
0
32
SAP Event Meshで始めるイベント・ドリブン・アーキテクチャ / Getting Started with Event-Driven Architecture Using SAP Event Mesh
abekem
0
81
2025-02-27 社内勉強会 オブジェクト指向入門 / Introduction to Object-Oriented
abekem
0
87
Other Decks in Programming
See All in Programming
Langfuseと歩む生成AI活用推進
licux
3
290
Vibe coding コードレビュー
kinopeee
0
460
「リーダーは意思決定する人」って本当?~ 学びを現場で活かす、リーダー4ヶ月目の試行錯誤 ~
marina1017
0
240
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
700
コンテキストエンジニアリング Cursor編
kinopeee
1
680
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
140
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
450
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
670
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
180
Claude Code と OpenAI o3 で メタデータ情報を作る
laket
0
130
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
240
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
220
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
890
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Gamification - CAS2011
davidbonilla
81
5.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Statistics for Hackers
jakevdp
799
220k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.6k
Transcript
2025/08/06 社内勉強会 1 Gitを知る頃
2 • チーム開発で避けては通れないGit ◦ Agentic Codingにも重要 • Gitはともだち こわくないよ • 基本的な操作、マージと競合の解決などのユースケースをTortoiseGitを
使う前提で説明 • Gitを使って安全に共同作業ができるようになろう What is it? Claude Code 使おうぜって話 - toridori 社エンジニアの weekly meeting にて
3 Gitの概要
4 • ファイルの変更履歴を管理するバージョン管理システム(VCS) • いつ、誰が、どんな変更をしたかわかる! Gitとは よくある人力バージョン管理が不要になる • ファイル名の日付を更新する •
修正箇所の前後にコメントを入れる file_20250731.txt file_20250806.txt file_new.txt file_new_2.txt // 20250806 ここから 〜何らかの修正〜 // 20250806 ここまで Hello, World! 2025/08/04 Aさん Hello, Git! 2025/08/05 Bさん Hello, Git! Happy coding 2025/08/05 Aさん
5 • 分散型バージョン管理システム • 複数人で共有するリモートリポジトリ • 個人が作業するローカルリポジトリ • コミットにより変更履歴を追加 •
ブランチで変更履歴を分岐 • プッシュ/プルでリモートとローカルの リポジトリを同期 Gitの仕組み プッシュ プル リモートリポジトリ ローカルリポジトリ ローカルリポジトリ ファイル コミット ブランチ
6 基本操作
7 • リモートリポジトリをローカルに複製する • 初回のみ実施する • 特にオプションを指定しない場合、 リモートのデフォルトブランチのみコピー クローン リモート
ローカル リモートリポジトリ ローカルリポジトリ main main
8 リモートリポジトリのURL クローン先のフォルダ
9
10 • ローカルリポジトリに変更履歴を追加する • コミットがGit操作の根底にある ◦ ある程度小さく、意味のある単位に分けるのが吉 • ローカルにしか反映されない ◦
気軽にできる コミット リモート ローカル main main
11
12
13 ログ・差分表示 コミット済みの変更履歴を表示
14 1. クローンする 2. name.txt ファイルに自分の名前を書いてコミット 3. 差分を眺める 練習 クローン→コミット
リモート ローカル main main
15 ブランチ・マージ・競合の解決
16 • ブランチによって履歴を分岐できる • 個人の作業用としても有用 • リモートリポジトリにはまだ存在しないため、プッシュのみ可能 ローカルブランチの作成 リモート ローカル
your-branch main main
17
18
19 • ローカルブランチの履歴をリモートブランチに反映する • 基本的には、ローカルで表示中のブランチを反映 プッシュ ローカル リモート your-branch main
your-branch main リモートリポジトリ ローカルリポジトリ
20
21
22 1. mainブランチから新規ブランチを作成 他の人と被らないように、ブランチ名に名前を入れてください 例)develop-abe-kentaro 2. 作成したブランチをプッシュしてみる 3. ログを眺める 練習
ブランチ作成 →プッシュ ローカル リモート your-branch main your-branch main
• リモートブランチをローカルに複製する • リモートと同期(プッシュ/プル)が可能 23 リモートブランチの チェックアウト ローカル リモート remote-branch
remote-branch
24
25
26 • 任意の二つのブランチを統合する • 自分が今いるブランチに対して、別のブランチの差分を取り込む • プッシュしない限りは、ローカルリポジトリ内で完結する マージ ローカル リモート
your-branch remote-branch
27
28
29 1. for-mergeブランチをチェックアウト 2. 先ほど作成した、develop-your-branchに切り替え 3. for-mergeブランチをマージ 4. ログを眺める 練習
チェックアウト →マージ ローカル リモート your-branch remote-branch remote-branch
30 • マージするとき、通常はGitが変更を判断して自動で適用される • 変更箇所が被っていると、適用する変更を手動で選択する必要がある • 競合が発生すると、ローカルリポジトリは「マージ中」状態になる ◦ 競合を解決してコミットするか、マージを中止するまで続く 競合の解決
31
32
33 解決が大変な競合: • 変更の範囲が広い • 他人の変更が混ざっている ◦ 自分が把握していない変更がある 上記を起こさないようにするのがコツ 競合解決のコツ
34 つまり、 • 普段からローカルブランチを切って作業する ◦ 自分の変更だけに集中すればよい状態 • こまめにマージする ◦ 一度に変更する範囲が広くならないうちにマージする
• 後述するリベースが有効 競合解決のコツ
35 1. for-confictブランチをチェックアウト 2. develop-your-branchに切り替え 3. for-conflictブランチをマージ →競合発生 4. 解決してコミット
5. ログを眺める 練習 競合の解決
36 もっと便利に使う
37 1. コミットダイアログで ファイルを「コミット後に復元」 でマーク 2. 差分ツールで不要な変更を戻す 3. コミット 部分的にコミット
38 • コミットしていない変更を一時的に退避する めちゃめちゃ便利 特にプル マージの前後 スタッシュ
39 • ローカルブランチを任意の履歴に戻す リセット Hello, World! 2025/08/04 Aさん Hello, Git!
2025/08/05 Bさん Hello, Git! Happy coding 2025/08/05 Aさん
40 今のままではmainでプルできないので、コミットを取り消してみる 1. mainブランチをチェックアウトして、プル →エラー(最初にローカルブランチを作る前にコミットしたため) 2. 最初のコミットをリセット a. origin/mainと同じコミットにリセットする 3.
変更をスタッシュに退避してプル →成功 リセット→スタッシュ→プル→コミットはよくやる 練習 リセット→スタッシュ →プル 下線は別の人がmainに プッシュしていた場合の話
41 • 今いるブランチの起点を別ブランチに変更する ◦ 特殊なマージ Bにいる状態で、Aにリベース ≒ Aにいる状態で、Bをマージ リベース A
B B A A B マージ リベース 結果は同じ
42
43 1. mainから新しいブランチを作成 例)for-rebase-abe-kentaro 2. name.txt ファイルに自分の名前を書いてコミット 3. for-mergeにリベース 4.
ログを眺める develop-your-nameブランチのマージ履歴とは 違ったログになってるはず ちなみに、リベースでできることは多岐に渡るので調べてみてね 練習 リベース
44 • 各種コマンドと便利な使い方を紹介した • 今回はTortoiseGitを使う前提で話した ◦ 他のツールやGit本体もぜひ学んでください • 安全に共同作業しよう! まとめ