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
52
0
Share
2025-08-06 社内勉強会 Gitを知る頃 / When You First Know Git
Kentaro Abe
August 06, 2025
More Decks by Kentaro Abe
See All by Kentaro Abe
2025-08-27 社内勉強会 ソフトウェアテストの基礎 / Basics of Software Testing
abekem
0
23
2025-07-02 社内勉強会 SQLに親しむ / Getting to Know SQL
abekem
0
61
2025-05-28 社内勉強会 SOLID原則ではじめるよりよい設計の第一歩 / The First Step to Better Software Design with SOLID Principles
abekem
0
95
2025-04-23 社内勉強会 デザインパターン概論 / Overview of Design Patterns
abekem
0
52
2025-03-26 社内勉強会 オブジェクト指向入門 第二部 / Introduction to Object-Oriented Part2
abekem
0
51
SAP Event Meshで始めるイベント・ドリブン・アーキテクチャ / Getting Started with Event-Driven Architecture Using SAP Event Mesh
abekem
0
170
2025-02-27 社内勉強会 オブジェクト指向入門 / Introduction to Object-Oriented
abekem
0
100
Other Decks in Programming
See All in Programming
Kingdom of the Machine
yui_knk
2
210
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
250
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
120
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
210
AI-DLC Deep Dive
yuukiyo
8
3.8k
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
3k
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.9k
ソフトウェア設計の結合バランス #phperkaigi
kajitack
0
100
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
240
Oxlintとeslint-plugin-react-hooks 明日から始められそう?
t6adev
0
260
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
180
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
6.5k
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
160
The SEO identity crisis: Don't let AI make you average
varn
0
440
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
110
Odyssey Design
rkendrick25
PRO
2
570
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
270
Thoughts on Productivity
jonyablonski
76
5.1k
[SF Ruby Conf 2025] Rails X
palkan
2
960
Rails Girls Zürich Keynote
gr2m
96
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Pragmatic Product Professional
lauravandoore
37
7.2k
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本体もぜひ学んでください • 安全に共同作業しよう! まとめ