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入門
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
syobochim
April 25, 2019
Technology
49
23k
いちばんやさしいGit入門
20190425 JJUG ナイトセミナー
syobochim
April 25, 2019
Tweet
Share
More Decks by syobochim
See All by syobochim
20251209_WAKECareer_生成AIを活用した設計・開発プロセス
syobochim
7
2k
DDD x Microservice Architecture : Findy Architecture Conf 2025
syobochim
13
12k
AWSで実現する「好き」の感情 / Develop Suki by AWS #devio2022
syobochim
1
420
ドメイン駆動設計のススメ#1 / DDD DevLiveShow Chapter1
syobochim
1
570
ドメイン駆動設計のススメ#2 / DDD DevLiveShow Chapter2
syobochim
0
710
しょぼちむのエヴァンス本のススメ / syobochim read Evans Book
syobochim
10
31k
オンラインのプレゼンがさみしくて 拍手👏アプリつくりました #javajo / ClapHand Application
syobochim
1
350
KotlinでAndroidアプリつくってみた
syobochim
0
1.2k
20160128 jjug Nightセミナー_Git実践入門
syobochim
1
1.2k
Other Decks in Technology
See All in Technology
データ民主化のための LLM 活用状況と課題紹介(IVRy の場合)
wxyzzz
2
650
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
160
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
550
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
67k
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
380
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
41k
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
670
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
生成AI時代にこそ求められるSRE / SRE for Gen AI era
ymotongpoo
5
2.4k
toCプロダクトにおけるAI機能開発のしくじりと学び / ai-product-failures-and-learnings
rince
6
5.5k
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2k
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
Into the Great Unknown - MozCon
thekraken
40
2.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
47
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
110
A Modern Web Designer's Workflow
chriscoyier
698
190k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
63
Music & Morning Musume
bryan
47
7.1k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
190
Transcript
いちばんやさしいGit入門 2019/4/25 JJUG #jjug 宇賀神 みずき しょぼちむ(@syobochim) #jjug
よろしくお願いします! 宇賀神 みずき しょぼちむ(@syobochim) 『いちばんやさしいGit&GitHubの教本』 書きました! YouTube始めました! チャンネル登録お願いします #jjug
このセッションの目的 新たにGitを学びたい方に Gitの概念やGitコマンドを理解してもらう #jjug
もくじ 1. バージョン管理とは? 2. Gitの考え方 3. Gitの操作 4. Gitの勉強方法 #jjug
もくじ 1. バージョン管理とは? 2. Gitの考え方 3. Gitの操作 4. Gitの勉強方法 #jjug
バージョンとは それぞれのファイルの状態 =バージョン ファイルの複数バージョンを 保持すること=バージョン管理 #jjug
バージョン管理がうまくいかないと… 原始的なバージョン管理→バックアップを取り続ける • コピーに手間がかかる • ファイル名の一貫性が失われると崩壊する • うっかり上書きや削除をしてしまう 本当の最新はどれ?! #jjug
バージョン管理ができるGit ファイルの変更を「バージョン」として保存して 記録した地点へいつでも戻れる 作業者が複数人いても 最新状態や履歴をわかりやすく保てる 記録したバージョンに いつでも戻れる #jjug
もくじ 1. バージョン管理とは? 2. Gitの考え方 3. Gitの操作 4. Gitの勉強方法 #jjug
ファイルの変更を記録 = コミット 「いつ」「誰が」「どんな変更を」 したか記録されていく コミットをどんどん 保存していく コミット単位で 行き来できる #jjug
コミットのタイミング 意味を持ったまとまりや 後から扱いやすい単位でコミットをしよう #jjug
コミットの保管場所 = リポジトリ リポジトリは 「新規作成する」か 「既存のリポジトリをコピー(クローン)する」 方法がある 「リポジトリ」に コミットを貯めていく #jjug
2種類のリポジトリ 自分しか触らない 複数人で共有することが多い #jjug
2種類のリポジトリを使った共同作業 ローカルリポジトリから リモートリポジトリへ反映したり リモートリポジトリから ローカルリポジトリへ反映したり これを繰り返してコミットを共有し、共同作業を進めていく #jjug
もくじ 1. バージョン管理とは? 2. Gitの考え方 3. Gitの操作 4. Gitの勉強方法 #jjug
2種類のリポジトリ 自分しか触らない 複数人で共有することが多い #jjug
それぞれのリポジトリでの操作 自分しか触らない 複数人で共有することが多い まずはローカルリポジトリ #jjug
ローカルリポジトリの3つの場所 ワークツリー ステージングエリア Gitディレクトリ 編集する コミットしたい ファイルを登録する コミットする #jjug
ワークツリー ステージングエリア Gitディレクトリ コミットしたい ファイルを登録する コミットする 編集する 変更するファイルを保持する場所 「ワーキングツリー」 「作業ディレクトリ」とも呼ばれる
#jjug
ステージングエリア ワークツリー Gitディレクトリ コミットする コミットしたい ファイルを登録する コミットするファイルを 一時登録する場所 編集済みのものから コミットしたい
ファイルだけを抜き出せる →コミットの単位を 操作しやすくなる 「インデックス」と呼ばれ ることもある #jjug
コミットしたい ファイルを登録する Gitディレクトリ ワークツリー コミットする コミットを格納する場所 原則、コミットで記録した内容は 変更・削除されない #jjug
ローカルリポジトリの3つの場所 ワークツリー ステージングエリア Gitディレクトリ 編集する コミットしたい ファイルを登録する コミットする #jjug
最低限覚えておきたいコマンド (前半) #jjug
ローカルリポジトリを作成する 通常の ディレクトリ リモートリポジトリ ローカルリポジトリ git init git clone 新規作成
既存をコピー #jjug
コミットまでの流れ ワークツリー ステージングエリア Gitディレクトリ コミットしたい ファイルを登録する git add git commit
コミットする #jjug
ステータスの確認 git status 現在のローカルリポジトリの 状態を確認 0OCSBODINBTUFS $IBOHFTUPCFDPNNJUFE ʢதུʣ ɹɹOFXpMF(JU@.&.0NE 全てコミット済み
(中略) ファイルを編集 (中略) ファイルを新規作成 (中略) ステージングに登録 #jjug
履歴の確認 git log コミットの履歴を確認 -p オプションをつけると どんな変更をしたかも 確認できる #jjug ichiyasa
<
[email protected]
>
紹介したコマンド(前半) • git init • ローカルリポジトリの作成 • git clone •
リモートリポジトリからリポジトリをコピー • git add • コミットしたいファイルをステージングエリアへ 登録 • git commit • ステージングエリアの変更をコミットする • git status • ローカルリポジトリの状態確認 • git log • コミット履歴の確認 #jjug
それぞれのリポジトリでの操作 自分しか触らない 複数人で共有することが多い ローカルリポジトリここまで #jjug
それぞれのリポジトリでの操作 自分しか触らない 複数人で共有することが多い お次はリモートリポジトリ #jjug
リモートリポジトリの役割 コミットは任意のタイミングで リモートリポジトリに反映 任意のタイミングで ローカルリポジトリに反映 #jjug
共同作業の難しさ 来週リリースの機能が すでに入っている…?! #jjug
共同作業に役立つブランチ 同͡リϙδトリͰ複数の作業を並行して進め、 任意の時点Ͱ反映Ͱきる ブランチを統合すること=「マージ」 masterブランチ トピックブランチ #jjug
マージで発生する変更の衝突 開催地:沖縄県 開催地:東京都 開催地:北海道 マージできない! ❌ 変更の衝突を 「コンフリクト」や「競合」 と呼びます。 #jjug
コンフリクトを解決する コンフリクトが発生している時の git status <<<<<<<< コンフリクトしている箇所の開始地点 >>>>>>>>> コンフリクトしている箇所の終了地点 ======== 2つのブランチの境目
1. ファイルを正しく変更して 2. コンフリクトの印である記号を消して 3. コミットする #jjug
最低限覚えておきたいコマンド (後半) #jjug
リモートリポジトリの役割 任意のタイミングで ローカルリポジトリに反映 git pull git push コミットは任意のタイミングで リモートリポジトリに反映 #jjug
ローカルリポジトリ→リモートリポジトリ ローカルリポジトリ リモートリポジトリ git push origin update-venue プッシュ先の リモートリポジトリの名前 プッシュするブランチ名
#jjug
リモートリポジトリ→ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git pull origin master プル先の リモートリポジトリの名前 プルするブランチ名
#jjug #jjug
ブランチの作成と移動 git branch update-venue 作成するブランチ名 git checkout update-venue 切り替え先の ブランチ名
ブランチを切り替えて から作業する update-venue master git merge master 変更を取り込みたい ブランチ update-venue master masterブランチの 最新情報を取り込む update-venue master #jjug
紹介したコマンド(後半) • git push • ローカルリポジトリからリモートリポジトリへ反映 • git pull •
リモートリポジトリからローカルリポジトリへ反映 • git branch • ブランチの作成 • git checkout • ブランチの切り替え • git merge • ブランチの統合 #jjug
最低限覚えておきたいコマンド (まとめ) #jjug
紹介したコマンド(前半) • git init • ローカルリポジトリの作成 • git clone •
リモートリポジトリからリポジトリをコピー • git add • コミットしたいファイルをステージングエリアへ 登録 • git commit • ステージングエリアの変更をコミットする • git status • ローカルリポジトリの状態確認 • git log • コミット履歴の確認 #jjug
紹介したコマンド(後半) • git push • ローカルリポジトリからリモートリポジトリへ反映 • git pull •
リモートリポジトリからローカルリポジトリへ反映 • git branch • ブランチの作成 • git checkout • ブランチの切り替え • git merge • ブランチの統合 #jjug
もくじ 1. バージョン管理とは? 2. Gitの考え方 3. Gitの操作 4. Gitの勉強方法 #jjug
実際に使ってみるのがいちばん! 一人でも始められる! プログラミング以外でもバージョン管理は役に立つ! • 業務で開発しているプロジェクトのソースコード • 趣味で開発しているプロジェクトのソースコード • 勉強会メモ •
書籍の原稿 などなど… #jjug
コマンドに慣れない… 無理をせずGUIクライアントを試してみよう! 大切なのは、Gitで何ができるのかを理解して 自分はどこでどんな操作をしているのか意識すること! #jjug
おすすめ書籍 詳しく、丁寧に、そして いちばんやさしく 書いてある #jjug
書籍で紹介しているコマンドたち git checkout git rm git diff git reset git
config git remote git fetch #jjug
もくじ 1. バージョン管理とは? 2. Gitの考え方 3. Gitの操作 4. Gitの勉強方法 #jjug
最後に JJUGのセミナーがきっかけで 「いちばんやさしいGit&GitHubの教本」 を書くことになりました! JJUGのみなさまありがとうございます! 書籍お持ちの方はAmazonレビューを 是非お願いします! (やさしくお願いします) #jjug
ありがとうございました! #jjug