Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
About Git/Github
Search
YushiroDodo63
April 21, 2022
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
About Git/Github
This slide is description of Git and Github for our development team.
YushiroDodo63
April 21, 2022
Other Decks in Technology
See All in Technology
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
190
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
4.9k
Getting Started with Google Antigravity
glaforge
0
310
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
110
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
190
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
Design in an AI World
tapps
1
350
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring anti-patterns in Rails
aemeredith
4
540
Visualization
eitanlees
153
17k
Unsuck your backbone
ammeep
672
58k
Designing for Timeless Needs
cassininazir
1
530
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Transcript
NUTMEG Git Yushiro Dodo
はじめに 1 技大祭実行委員 情報局 0
「Git」とは ファイルのバージョン管理ツール で す はじめに
バージョン管 理ツール データを保存するだけでなく、 誰が、いつ、どこを 編集したか。 その履歴も保存管理するツール
バージョン管 理ツール
バージョン管 理ツール
バージョン管 理ツール データを保存するだけでなく、 誰が、いつ、どこを 編集したか。 その履歴も保存管理するツール
Git できること 02 技大祭実行委員 情報局
Git 特徴 1. ファイルのバージョン管理 2. 上書きされたりすることなく、 一つのファイルを複数人で編集
Git できること • 個人の作業場所と共有の作業場所 がある。 • 作業内容の保存と共有ができる ざっくり説明 共有の作業場所 自分の作業場所
別の人の作業場所
Git できること • 個人の作業場所と共有の作業場所 がある。 • 作業内容の保存と共有ができる ざっくり説明 共有の作業場所 自分の作業場所
別の人の作業場所
Git 用語説明 直訳すると「貯蔵庫」 データを保管する場所のこと。 リモートリポジトリ ローカルリポジトリ の2種類がある リポジトリ
Git 用語説明 サーバ上に置かれるリポジトリ 1つしか存在せず、 みんなで共有できる。 一番大事で、 メインとなるリポジトリ リモートリポジトリ
Git 用語説明 個人個人のPC上に作られる リポジトリ 開発メンバーの数だけできる。 ローカルリポジトリ
Git できること • 個人の作業場所と共有の作業場所 がある。 • 作業内容の保存と共有ができる ざっくり説明 リモートリポジトリ ローカルリポジトリ
ローカルリポジトリ
Git できること ”fuga”というファイルの 4~6行目を編集 作業内容の保存 - hoge |- fuga(update) ローカルリポジトリ
リモートリポジトリ - hoge |- fuga 1 =========== 2 =========== 3 =========== 4 =========== 5 =========== 6 =========== 7 =========== 8 =========== 9 =========== 10 =========== 11 =========== 12 ===========
Git できること このファイルを リモートリポジトリに共有 作業内容の保存 - hoge |- fuga(update) ローカルリポジトリ
リモートリポジトリ - hoge |- fuga 1 =========== 2 =========== 3 =========== 4 =========== 5 =========== 6 =========== 7 =========== 8 =========== 9 =========== 10 =========== 11 =========== 12 ===========
Git できること このファイルを リモートリポジトリに共有 作業内容の保存 - hoge |- fuga(update) ローカルリポジトリ
リモートリポジトリ - hoge |-fuga(update) 1 =========== 2 =========== 3 =========== 4 =========== 5 =========== 6 =========== 7 =========== 8 =========== 9 =========== 10 =========== 11 =========== 12 ===========
Git できること 共有されたファイルは 他の人も持ってこれる 作業内容の共有 - hoge |- fuga(update) ローカルリポジトリ
リモートリポジトリ - hoge |-fuga(update) 1 =========== 2 =========== 3 =========== 4 =========== 5 =========== 6 =========== 7 =========== 8 =========== 9 =========== 10 =========== 11 =========== 12 ===========
Git できること 共有されたファイルは 他の人も持ってこれる 作業内容の共有 - hoge |- fuga(update) ローカルリポジトリ
リモートリポジトリ - hoge |-fuga(update) 1 =========== 2 =========== 3 =========== 4 =========== 5 =========== 6 =========== 7 =========== 8 =========== 9 =========== 10 =========== 11 =========== 12 =========== このおかげで チーム開発が非常にやりやすい
Git 基本用語 03 技大祭実行委員 情報局
Git 用語説明 作業の履歴を枝分かれさせて 記録するもの ブランチ
Git 用語説明 ブランチを結合すること マージ
Git 使い方 04 技大祭実行委員 情報局
基本の使い方 Gitには大きく分けて 左の4つの状態がある Gitの状態 ワークツリー Work Tree インデックス ( ステージ
) Index ( Stage ) ローカルリポジトリ Local Repository リモートリポジトリ Remote Repository
gitコマンドを料理に例えてイメージしてみる ハンバーグを作るとしましょう
基本の使い方 開発のための準備 -クローン- Work Tree Index(Stage) Local Remote リモートリポジトリからクローンし 自分のローカル環境に複製する。
開発を始めるときに最初に 実行するコマンド command: git clone <URL> ex: git clone
[email protected]
:NUTFes/FinanSu.git
基本の使い方 開発のための準備 -クローン- 材料を買ってくる 道具を用意する
基本の使い方 開発のための準備 -プル- リモートリポジトリからプルして 自分のローカル環境に反映する。 データのダウンロードのようなもの。 command: git pull origin
<ブランチ名> ex: git pull origin develop Work Tree Index(Stage) Local Remote
基本の使い方 開発のための準備 -プル- 材料を冷蔵庫から出す 道具を用意する
基本の使い方 開発のための準備 -ブランチを切る- 開発のためにブランチを切る 開発内容に沿ったブランチ名にする command: git checkout -b <branch
name> ex: git checkout -b feature/issue1 or command: git switch -c <branch name> ex: git switch -c feature/issue1
基本の使い方 開発のための準備 -ブランチを切る- メインキッチンのブランチから、 玉ねぎブランチ 肉をこねるブランチ 焼くブランチ ソースブランチ に分ける メイン
キッチン 玉ねぎ 肉 こねる 焼く ソース
基本の使い方 編集中のファイルは Work Tree にある Work Tree Work Tree Index(Stage)
Local Remote
基本の使い方 玉ねぎ担当: 玉ねぎを切ったり炒めたりしてる Work Tree Work Tree Index(Stage) Local Remote
基本の使い方 編集が終わって保存したいファイルを Index(Stage)に登録 ステージング Work Tree Index(Stage) Local Remote command:
git add <ファイル名> ex: git add hoge.txt
基本の使い方 ステージング Work Tree Index(Stage) Local Remote 玉ねぎ担当: 玉ねぎ切って炒めた。 いつでも肉と混ぜれます。
基本の使い方 ステージングされたファイルを ローカルリポジトリに登録 ゲームで言うセーブにあたる コミット Work Tree Index(Stage) Local Remote
command: git commit -m “<commit message>" ex: git commit -m “hoge.txtの修正” Save
基本の使い方 コミット Work Tree Index(Stage) Local Remote 玉ねぎ担当: 玉ねぎを皿に置いといて、 いつでも肉と混ぜれるようにした
準備万端の状態 Save
基本の使い方 ローカルリポジトリの編集を リモートリポジトリに反映する プッシュ Work Tree Index(Stage) Local Remote command:
git push origin <branch name> ex: git push origin main
基本の使い方 準備万端の玉ねぎをキッチンに納める プッシュ Work Tree Index(Stage) Local Remote
基本の使い方 準備万端の玉ねぎをキッチンに納める プッシュ Work Tree Index(Stage) Local Remote 基本的にはこれらのコマンドを使って 開発を進めていく
Git 初級編 05 技大祭実行委員 情報局
基本の使い方 ファイルの編集をもとに戻したいとき 編集の取り消し Work Tree Index(Stage) Local Remote # 元々あったファイル
command: git restore <ファイル名> ex: git restore hoge.txt ex: git restore . # 全て元に戻す # 新しく作成したファイル command: git clean <option> ex: git clean -f # ファイル ex: git clean -df # ディレクトリ
基本の使い方 git add でステージングしたファイルを もとに戻したいとき ステージングの取り消し Work Tree Index(Stage) Local
Remote command: git reset HEAD <ファイル名> ex: git reset HEAD hoge.txt
基本の使い方 git add でステージングしたファイルを 全部もとに戻したいとき ステージングの取り消し Work Tree Index(Stage) Local
Remote command: git reset HEAD
基本の使い方 直前のコミットを取り消して indexに戻す コミットの取り消し Work Tree Index(Stage) Local Remote command:
git reset --soft HEAD^ Save
基本の使い方 直前のコミットを取り消して 1つ前のコミットを作成した直後に戻る ※ インデックス・ワークツリーの変更も元に 戻るため注意が必要 コミットの取り消し Work Tree Index(Stage)
Local Remote command: git reset --hard HEAD^ Save
基本の使い方 直前のコミットを取り消す 新しいコミットを作成。 既にPush済みで削除したくない コミットがある際に用いる場合がある コミットの取り消し Work Tree Index(Stage) Local
Remote command: git revert <commit id> Save
基本の使い方 直前のコミットを修正するコマンド コメントを追加したときなど、 軽い変更の場合に用いる。 コミットの修正 Work Tree Index(Stage) Local Remote
command: git commit --amend -m “commit msg” ex: git commit --amend -m “hoge.txtの修正” Resave
Git 中級編 06 技大祭実行委員 情報局
これまで当たり前に使ってたコマンドを ちょっと見直してみよう
[git checkout] 編
Gitコマンド 見直し git checkout 変更を元に戻すコマンド git checkout <filename> git checkout
. ブランチを変更するコマンド git checkout <branchname> git checkout -b <branchname>
Gitコマンド 見直し git checkout 変更を元に戻すコマンド git checkout <filename> git checkout
. ブランチを変更するコマンド git checkout <branchname> git checkout -b <branchname> 1つのコマンドで別々の処理ができる → わかりにくい!
Gitコマンド 見直し git checkout 変更を元に戻すコマンド git restore <filename> git restore
. ブランチを変更するコマンド git switch <branchname> git switch -c <branchname>
Gitコマンド 見直し 変更を元に戻すコマンド コマンドでもrestoreを推奨 git restore <filename> git restore .
[git commit] 編
コミット どのタイミングでコミットしてる? • issueが完全に終わった時? • 作業が一段落ついた時? • ファイルに変更を加えた時? コミット Work
Tree Index(Stage) Local Remote Save
コミット 一概にこれが正解!とは言えないが 基準として考えられることは • エラーがなく動く単位 • タスクの粒度によっては、 1issue1commit • 戻したい単位
(ゲームのセーブと同じ単位) • renameやファイル移動 • タスクに関係がない修正 Work Tree Index(Stage) Local Remote Save
[git pull] 編
Gitのリポジトリは、 - リモートリポジトリ - ローカルリポジトリ の2つに分かれている。 Gitコマンド 見直し Local repository
Remote repository
リモートリポジトリは - リモートブランチ ローカルリポジトリは - トラッキングブランチ - ローカルブランチ の3つのブランチがある。 Gitコマンド
見直し Local repository Remote repository リモートブランチ トラッキングブランチ ローカルブランチ
リモートリポジトリ上の ブランチの状態を指すもの git branch -r で確認可能 Gitコマンド 見直し Local repository
Remote repository リモートブランチ トラッキングブランチ ローカルブランチ リモートブランチ
リモートブランチの内容を 追跡(トラッキング)するブランチ git branch -a で確認可能 Gitコマンド 見直し Local repository
Remote repository リモートブランチ トラッキングブランチ ローカルブランチ トラッキングブランチ
ローカルリポジトリにあるブランチ git branch で確認可能 Gitコマンド 見直し Local repository Remote repository
リモートブランチ トラッキングブランチ ローカルブランチ ローカルブランチ
リモートブランチから トラッキングブランチに 最新情報を持ってくるコマンド Gitコマンド 見直し Local Remote リモートブランチ トラッキングブランチ ローカルブランチ
git fetch command: git fetch origin // <origin>は省略可 // 特定のブランチのみfetch command: git fetch origin master origin/master remotes/origin/master master
トラッキングブランチから ローカルブランチに 最新情報を持ってくるコマンド Gitコマンド 見直し git merge // マージする先のブランチでコマンドを実行 command:
git merge <マージ元のブランチ> // in master branch ex: git merge remotes/origin/master ex: git merge origin/master Local Remote リモートブランチ トラッキングブランチ ローカルブランチ master remotes/origin/master origin/master
リモートブランチから トラッキングブランチを介して、 ローカルブランチに 最新情報を持ってくるコマンド Gitコマンド 見直し git pull command: git
pull origin <branch name> ex: git pull origin master Local Remote リモートブランチ トラッキングブランチ ローカルブランチ master remotes/origin/master origin/master
“git pull”の後の “origin” って何か =リポジトリのURLの別名 (あだ名) Gitコマンド 見直し ちょっと脱線 Local
Remote リモートブランチ トラッキングブランチ ローカルブランチ master remotes/origin/master origin/master
“origin” はあだ名なので、 もちろんさっき確認したURLを使って プルしてくることも可能 Gitコマンド 見直し ちょっと脱線 Local Remote リモートブランチ
トラッキングブランチ ローカルブランチ master remotes/origin/master origin/master
Gitコマンド 見直し Local repository Remote repository リモートブランチ トラッキングブランチ ローカルブランチ fetch
merge pull pullは、リモートブランチから ローカルブランチに fetch + merge は、 リモートブランチから トラッキングブランチを介して、 ローカルブランチに
Gitコマンド 見直し Local repository Remote repository リモートブランチ トラッキングブランチ ローカルブランチ fetch
merge pull pullは、リモートブランチから ローカルブランチに fetch + merge は、 リモートブランチから トラッキングブランチを介して、 ローカルブランチに やっとること一緒やんけ! じゃあpullで良くない??
Gitコマンド 見直し Local repository Remote repository リモートブランチ トラッキングブランチ ローカルブランチ fetch
merge pull pullは、リモートブランチから ローカルブランチに直接マージする = コンフリクトが起こりやすい
Gitコマンド 見直し Local repository Remote repository リモートブランチ トラッキングブランチ ローカルブランチ fetch
merge pull fetch + merge は • リモートの内容をローカルに 反映する前に差分を確認したい = コンフリクトを防ぐため • pullするブランチ先をよく間違える 場合に用いると良い
プルリクエスト 編
push後、別ブランチにマージする前に 動作確認などをしてもらうためのGithub の機能 Git 中級編 プルリクエスト(プルリク) とは プルリクエスト
手順 1. 確認用のブランチを作成 git switch -c review/issue1 2. プルリクが出されているブランチ からプルしてくる
git pull origin feature/issue1 3. 修正点があったら修正して、 add, commit, pushする git push origin review/issue1:feature/issue1 4. 動作確認し問題ないならマージする Git 中級編 プルリクエスト(プルリク) の確認方法 (ローカルで何も作業してない時)
手順 1. プルリク確認用ディレクトリを作成 mkdir review_dir 2. git cloneする git clone
<repository URL> 3. プルリクが出ているブランチに移動 git switch feature/issue1 4. 修正点があったら修正して、 add, commit, pushする git push origin feature/issue1 5. 動作確認し問題ないならマージする Git 中級編 プルリクエスト(プルリク) の確認方法 (ローカルで作業中の時)
コンフリクト 編
複数人が同じ箇所を編集したときに、 どっちの編集を優先していいか わからない状態。 Git 中級編 リモートリポジトリ hoge.txtの3行目を編集 hoge.txtの3行目を編集 コンフリクト コンフリクト
Aさん Bさん
これがコンフリクトが起こってる状態 Git 中級編 コンフリクト
- Github上で解消 (簡単なコンフリクトならGithubで 解消可能) - コードを編集して解消 (複雑なコンフリクトの場合は、 実際にコードを編集して解消する) Git 中級編
リモートリポジトリ hoge.txtの3行目を編集 hoge.txtの3行目を編集 コンフリクト コンフリクトの解消方法 Aさん Bさん
1. Resolve conflictsボタンをクリック 2. ファイルを修正 3. Mark as Resolvedボタンを クリック
4. Commit mergeボタンをクリック Git 中級編 リモートリポジトリ hoge.txtの3行目を編集 hoge.txtの3行目を編集 コンフリクト Github上で解消 Aさん Bさん
Git 中級編 Github上で解消 [Resolve conflicts]をクリック
Git 中級編 Github上で解消 画面右側のテキストエリアを編集
Git 中級編 Github上で解消 編集後、右側のボタン [Mark as resolved]をクリック
Git 中級編 Github上で解消 コンフリクトが解消されたので、 [Commit merge]ボタンをクリック
Git 中級編 Github上で解消 コンフリクトが解消され、 マージ可能になった
1. コンフリクト解消用ブランチを作成 2. マージ先のブランチからプルする 3. ファイルを編集 4. add, commit, push
5. プルリクを書いてマージする Git 中級編 リモートリポジトリ hoge.txtの3行目を編集 hoge.txtの3行目を編集 コンフリクト コードを編集して解消 Aさん Bさん
Git 中級編 コードを編集して解消 コンフリクト解消用のブランチを作成 command: git switch -c <branch name>
ex: git switch -c fix/conflict リモートリポジトリ hoge.txtの3行目を編集 hoge.txtの3行目を編集 コンフリクト Aさん Bさん
Git 中級編 コードを編集して解消 マージ先のブランチからプル feature/conflict-4 ブランチから master ブランチにマージするときに コンフリクトが発生 =
masterブランチからプル command: git pull origin <branch name> ex: git pull origin master 作業ブランチ (feature/conflict-4) コンフリクト解消ブランチ (fix/conflict-2) コンフリクト マージ先ブランチ (master) push pull
Git 中級編 コードを編集して解消 VSCodeでファイルを開くと 以下のように表示される
Git 中級編 コードを編集して解消 上部(HEAD(Current Change))の 変更をマージする場合
Git 中級編 コードを編集して解消 上部(HEAD(Current Change))の 変更をマージする場合
Git 中級編 コードを編集して解消 下部(Incoming Change)の 変更をマージする場合
Git 中級編 コードを編集して解消 下部(Incoming Change)の 変更をマージする場合
Git 中級編 コードを編集して解消 両方の変更をマージする場合
Git 中級編 コードを編集して解消 両方の変更をマージする場合
Git 中級編 コードを編集して解消 手動で不要な部分を削除してもOK
Git 中級編 コードを編集して解消 編集が終了したら、 add, commit, push を行う
Git 中級編 コードを編集して解消 編集が終了したら、 add, commit, push を行う
Git 中級編 コードを編集して解消 プルリクを作成。 先程のconflict解消のコミットが 反映されている
Git 中級編 コードを編集して解消 マージ可能になっている
Git まとめ 07 技大祭実行委員 情報局
• コミットの粒度やいつも使ってるコマンドを ちょっとだけ意識しよう! • Gitは使えば使うほど慣れていくので 使い倒しましょう!