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
69
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
36
2025-07-02 社内勉強会 SQLに親しむ / Getting to Know SQL
abekem
0
76
2025-05-28 社内勉強会 SOLID原則ではじめるよりよい設計の第一歩 / The First Step to Better Software Design with SOLID Principles
abekem
0
130
2025-04-23 社内勉強会 デザインパターン概論 / Overview of Design Patterns
abekem
0
78
2025-03-26 社内勉強会 オブジェクト指向入門 第二部 / Introduction to Object-Oriented Part2
abekem
0
64
SAP Event Meshで始めるイベント・ドリブン・アーキテクチャ / Getting Started with Event-Driven Architecture Using SAP Event Mesh
abekem
0
220
2025-02-27 社内勉強会 オブジェクト指向入門 / Introduction to Object-Oriented
abekem
0
110
Other Decks in Programming
See All in Programming
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
400
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
170
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
790
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
yield再入門 #phpcon
o0h
PRO
0
1.1k
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
860
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
500
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
3
980
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
190
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
470
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Tell your own story through comics
letsgokoyo
1
1k
We Have a Design System, Now What?
morganepeng
55
8.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
Rails Girls Zürich Keynote
gr2m
96
14k
Paper Plane
katiecoart
PRO
2
53k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
760
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
480
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本体もぜひ学んでください • 安全に共同作業しよう! まとめ