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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
22
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
94
2025-04-23 社内勉強会 デザインパターン概論 / Overview of Design Patterns
abekem
0
51
2025-03-26 社内勉強会 オブジェクト指向入門 第二部 / Introduction to Object-Oriented Part2
abekem
0
50
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
CDK Deployのための ”反響定位”
watany
4
670
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
320
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
850
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
6.2k
おれのAgentic Coding 2026/03
tsukasagr
1
140
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
200
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
250
Rethinking API Platform Filters
vinceamstoutz
0
11k
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
240
アーキテクチャモダナイゼーションとは何か
nwiizo
17
4.8k
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
130
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
650
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
120
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
120
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
100
Design in an AI World
tapps
0
190
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.5k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
170
Why Our Code Smells
bkeepers
PRO
340
58k
Site-Speed That Sticks
csswizardry
13
1.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1k
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本体もぜひ学んでください • 安全に共同作業しよう! まとめ