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
42
19k
いちばんやさしい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
390
ドメイン駆動設計のススメ#1 / DDD DevLiveShow Chapter1
syobochim
0
490
ドメイン駆動設計のススメ#2 / DDD DevLiveShow Chapter2
syobochim
0
660
しょぼちむのエヴァンス本のススメ / syobochim read Evans Book
syobochim
10
29k
オンラインのプレゼンがさみしくて 拍手👏アプリつくりました #javajo / ClapHand Application
syobochim
1
330
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.2k
Other Decks in Technology
See All in Technology
QAを"自動化する"ことの本質
kshino
1
130
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
4
1.3k
生成AI時代に若手エンジニアが最初に覚えるべき内容と、その学習法
starfish719
2
380
⽣成 AI で進化する AWS オブザーバビリティ
o11yfes2023
0
130
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
13
4.6k
"おまじない"はもう卒業! デバッガで探るSpring Bootの裏側と「学び方」の学び方
takeuchi_132917
0
170
「O(n log(n))のパフォーマンス」の意味がわかるようになろう
dhirabayashi
0
180
Redux → Recoil → Zustand → useSyncExternalStore: 状態管理の10年とReact本来の姿
zozotech
PRO
16
8.5k
AIと自動化がもたらす業務効率化の実例: 反社チェック等の調査・業務プロセス自動化
enpipi
0
620
バフェットコード株式会社 開発チームカルチャーデック
shoe116
1
100
米軍Platform One / Black Pearlに学ぶ極限環境DevSecOps
jyoshise
2
430
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
55
17k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
Building an army of robots
kneath
306
46k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
A Modern Web Designer's Workflow
chriscoyier
697
190k
GraphQLとの向き合い方2022年版
quramy
49
14k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Music & Morning Musume
bryan
46
6.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
The Language of Interfaces
destraynor
162
25k
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