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
syobochim
April 25, 2019
Technology
2
2.8k
いちばんやさしいGit入門
20190425 JJUG ナイトセミナー
syobochim
April 25, 2019
Tweet
Share
More Decks by syobochim
See All by syobochim
AWSで実現する「好き」の感情 / Develop Suki by AWS #devio2022
syobochim
1
340
ドメイン駆動設計のススメ#1 / DDD DevLiveShow Chapter1
syobochim
0
340
ドメイン駆動設計のススメ#2 / DDD DevLiveShow Chapter2
syobochim
0
540
しょぼちむのエヴァンス本のススメ / syobochim read Evans Book
syobochim
9
27k
オンラインのプレゼンがさみしくて 拍手👏アプリつくりました #javajo / ClapHand Application
syobochim
1
290
KotlinでAndroidアプリつくってみた
syobochim
0
1.2k
20160128 jjug Nightセミナー_Git実践入門
syobochim
1
1.2k
第三回マイクロサービスアーキテクチャ読書会(後半)
syobochim
0
1.2k
SIerもはじめる わたしたちのDevOps #jjug_ccc
syobochim
0
1.1k
Other Decks in Technology
See All in Technology
大規模サービスにおける カスケード障害
takumiogawa
3
710
ひまプロプレゼンツ 「エンジニア格付けチェック 〜春の公開収録スペシャル〜」
kaaaichi
0
170
SaaSプロダクト開発におけるバグの早期検出のためのAcceptance testの取り組み
kworkdev
PRO
0
490
LINE Notify互換のボットを作った話
kenichirokimura
0
190
Cline、めっちゃ便利、お金が飛ぶ💸
iwamot
20
19k
OCI見積もり入門セミナー
oracle4engineer
PRO
0
120
Engineering Managementのグローバルトレンド #emoasis / Engineering Management Global Trend
kyonmm
PRO
6
1k
小さく始めるDevOps 内製化支援から見えたDevOpsの始め方 / 20250317 Ken Takayanagi
shift_evolve
1
110
Riverpod & Riverpod Generatorを利用して状態管理部分の処理を書き換えてみる簡単な事例紹介
fumiyasac0921
0
110
AWS CDK コントリビュート はじめの一歩
yendoooo
1
120
AIエージェント完全に理解した
segavvy
4
300
開発現場とセキュリティ担当をつなぐ脅威モデリング
cloudace
0
110
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
200k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
28
1.6k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Building Adaptive Systems
keathley
41
2.5k
Optimizing for Happiness
mojombo
377
70k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Building an army of robots
kneath
304
45k
Being A Developer After 40
akosma
90
590k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
29
2k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
480
Speed Design
sergeychernyshev
28
870
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