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
Introduction to Git & GitHub
Search
Kotokaze
May 17, 2021
Education
0
210
Introduction to Git & GitHub
Git 講習会で使用した資料です。
Git と GitHub CLI を用いて説明しています。
Kotokaze
May 17, 2021
Tweet
Share
More Decks by Kotokaze
See All by Kotokaze
Stack&Heep
kotokaze
0
77
ファイルレスマルウェアの実態と対策
kotokaze
1
340
実は簡単!? AIを攻撃してみよう
kotokaze
0
330
Other Decks in Education
See All in Education
Introduction - Lecture 1 - Web Technologies (1019888BNR)
signer
PRO
0
4.9k
謙虚なアジャイルコーチ__アダプティブ_ムーブ_による伴走支援.pdf
antmiyabin
0
270
Design Guidelines and Models - Lecture 5 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
680
H5P-työkalut
matleenalaakso
4
36k
Epithelium Flashcards
ndevaul
0
990
HCI Research Methods - Lecture 7 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
700
勉強する必要ある?
mineo_matsuya
2
1.6k
Os pápeis do UX Design
wagnerbeethoven
0
360
お仕事図鑑pitchトーク
tetsuyaooooo
0
2.3k
Image Processing 1 : 1.Introduction
hachama
0
250
不登校予防・再登校支援プログラムを提供するToCo (トーコ) の会社紹介資料 toco.mom
toco3week
0
390
Amazon Connectを利用したCloudWatch Alarm電話通知
junghyeonjae
0
260
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Building Your Own Lightsaber
phodgson
103
6.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Become a Pro
speakerdeck
PRO
25
5k
Code Review Best Practice
trishagee
64
17k
A Tale of Four Properties
chriscoyier
156
23k
Adopting Sorbet at Scale
ufuk
73
9.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
120
Transcript
Git 入門 - Git を理解しよう Kotokaze
@Kotokaze__R Git とは 2021/5/10 2 https://git-scm.com/
@Kotokaze__R Git とは② 2021/5/10 3 (Distributed) Version Control System バージョン管理システム
(分散型) ファイルの更新履歴を記録、管理するためのツール
@Kotokaze__R VCS のススメ 2021/5/10 4 やめよう、ファイル名による管理
@Kotokaze__R バージョン管理システム (VCS) の進歩 ローカルVSC / 集中VCS / 分散VCS 2021/5/10
5
@Kotokaze__R ローカルVCS ✓ 名の通り、ローカル環境内 (DB) のみにデータを保存 ✓ 差分を使用 ✓ 代表例:
RCS 2021/5/10 図: https://git-scm.com/book/en/v2/images/local.png 6
@Kotokaze__R 集中VCS (CVCS) ✓ 全データはサーバのみで保持 ✓ 必要なものを取り込み、編集 ✓ サーバが死ぬ =
データが死ぬ ✓ 代表例: Subversion 2021/5/10 図: https://git-scm.com/book/en/v2/images/centralized.png 7
@Kotokaze__R 分散VCS ✓ ローカルがメインの保存先 → 回線を気にしなくてよい ✓ サーバPC にもバックアップ →
障害に強い ✓ 代表例: Git 2021/5/10 図: https://git-scm.com/book/en/v2/images/distributed.png 8
@Kotokaze__R セットアップしよう Windows 編 2021/5/10 9
@Kotokaze__R インストールしよう 2021/5/10 https://git-scm.com/downloads 10
@Kotokaze__R インストールしよう② 2021/5/10 11
@Kotokaze__R 注意点① ✓ 選択によっては別途インストールが必要 ✓ 宗教上の理由により、 Nano エディタを使用します 2021/5/10 12
@Kotokaze__R 注意点② 1. Git Bush のみで使う (シェル切り替え必須) 2. Posh* /
CMD で使う 3. Posh* / CMD で Git & Unix コマンドを使う 2021/5/10 Posh*: Power Shell のこと 13
@Kotokaze__R 注意点③ 行末(改行)文字の選択 ✓ Unix-Style CR (0x0D) ✓ MS-Style CR+LF
(0x0D + 0x0A) 2021/5/10 ※ MS-Style で commit するのは避けよう! 14
@Kotokaze__R Tab補完 (Posh) 1. Chocolatey というパッケージ管理ツールをインストール → https://chocolatey.org/install からスクリプトを入手 2.
管理者の Posh にペーストし実行 ( “Win + X” → “A”) 3. `cinst poshgit` (cinst: choco install のエイリアス) 2021/5/10 $ cinst poshgit 15
@Kotokaze__R セットアップしよう Mac 編 2021/5/10 16
@Kotokaze__R インストールしよう 1. Homebrew というパッケージ管理ツールをインストール → https://brew.sh/index_ja からスクリプトを入手 2. シェルを開き、ペースト&実行
3. `brew install git` を実行 2021/5/10 $ brew install git 17
@Kotokaze__R Tab補完 (zsh/bash) $ curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git- completion.zsh -o ~/.git-completion.zsh $
echo “. ~/.git-completion.zsh” >> ~/.zshrc ------------------------------------------------------------------------------------- $ curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git- completion.bash -o ~/.git-completion.bazsh $ echo “. ~/.git-completion.bash” >> ~/.bashrc 2021/5/10 18
@Kotokaze__R 準備をしよう 2021/5/10 19
@Kotokaze__R GitHub を使おう ! ✓ Git のホスティングサービス ✓ ユーザ数最多 (たぶん)
✓ 進捗管理ツールなども有 ✓ 学生はタダでPro版 2021/5/10 20
@Kotokaze__R 準備する 1. 初期設定する (宗教上の理由により、 Nano を使用します) 2. SSH Key
の作成 `ssh-keygen` し、指示に従い回答する 2021/5/10 $ ssh-keygen 21 $ git config --global user.name “${GitHubのユーザ名}” $ git config --global user.email ${
[email protected]
} $ git config --global core.editor nano $ ssh-keygen
@Kotokaze__R 準備する② 3. GitHub CLI のインストール → Mac: `brew install
gh` / Win: `cinst gh` 2021/5/10 $ choco install gh $ brew install gh 22 ✓ GitGitHub CLI とは。。。 GitHub 純正のコマンドラインツール リポジトリや、プルリクの作成などがコマンドで出来ちゃう
@Kotokaze__R 準備する③ 4. GitHub CLI の認証を通す `gh auth login` で、質問に答えていく
※ 途中の質問では、今回生成した SSH キーを選択する 5. 公開鍵のアップロード確認 2021/5/10 23 $ ssh
[email protected]
Hi <ユーザ名>! You‘ve successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed. $ gh auth login
@Kotokaze__R Git & GitHub 入門 Git ・ GitHub について知る 2021/5/10
24
@Kotokaze__R Git と GitHub Git と GitHub は別物です! ✓ Git
• バージョン管理システム (管理用ツールのこと) ✓ GitHub • ソースコードのホスティングサービス • バージョン管理システムに Git を採用している 2021/5/10 25
@Kotokaze__R Git のイメージ 2021/5/10 26 リモートリポジトリ (GitHub など) ワークスペース Push
Pull ローカルリポジトリ Commit
@Kotokaze__R Git の特徴① スナップショット(≠差分)で保存 ブランチの切り替えがスムーズ 2021/5/10 27
@Kotokaze__R ブランチ管理 2021/5/10 28
@Kotokaze__R Git の特徴② 完全性を持つ ✓ 格納される前にチェックサムが取られ、そのチェックサムで照合 ✓ ファイルの内容、もしくは Git 内のディレクトリ構造を元に計算
※ SHA-1 を使用 2021/5/10 29
@Kotokaze__R Git の特徴③ データを追加するだけ ✓ commit = 復元ポイント作成というようなイメージ ✓ ファイルを編集しても、以前に
commit した内容は不変 → データの復元ができる 2021/5/10 30
@Kotokaze__R Git & GitHub 入門 Git 管理を体験してみる 2021/5/10 31
@Kotokaze__R 基本編 データを GitHub に上げてみる 2021/5/10 32 パート①
@Kotokaze__R Git の重要コマンド 1. add 2.commit 3. push 0. ローカル
Repo 作成 1. ステージング・エリアに追加 2. ステージング・エリアの中身を ローカル Repo に保存 3. リモート Repo に Upload 2021/5/10 0. init 33
@Kotokaze__R 準備編 1. 作業場所の確保 (作業は、ワークスペース内でしよう!) `mkdir -p ~/workspace/git-study && cd
$_` ※ `$_` は bash(zsh) の特殊変数らしい(?) 2. Git のローカル・リポジトリを作成 `git init`¥ 3. GitHub にリモート・リポジトリを作成 `gh repo create` で指示に従い作成 2021/5/10 34 $ mkdir –p ~/workspace/git-study && cd $_ $ git init $ gh repo create
@Kotokaze__R 作業編① 1. ファイル編集 (わざと Typo してます) `echo “#git-study” >
README.md` 2. ステージング ・ エリアに編集済みファイルを追加 `git add <ファイルへの相対パス>` (ここでは `./README.md`) 3. 状況を確認する `git status` 2021/5/10 35 $ echo “# git-stady” > README.md $ git add ${ファイルへの相対パス} $ git status Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.md
@Kotokaze__R 作業編② 4. ステージング ・エリアの中身を、ローカルRepo に保存 `git commit` コメントは宗教上の理由で `:tada:
Initial commit` とする 5. 保存状況の確認 `git status` 2021/5/10 36 $ git commit -m “tada: Initial commit” $ git reflog ${識別} (HEAD -> master) HEAD@{0}: commit (initial): :tada: Initial commit
@Kotokaze__R 作業編③ 6. スナップショットを、サーバにアップロード `git push ${Repoの場所} ${ブランチ名}` GitHubリポジトリ: origin
ブランチ: master ※ origin は `
[email protected]
:${ユーザ名}/${Repo名}` のエイリアス ※ 人種差別を示唆するとして、 master 廃絶が進んでいる → 代替として、 main が使用され始めている 2021/5/10 37 $ git push ${Repoの場所} ${ブランチ名}
@Kotokaze__R 確認してみる 7. アップロードできているか、ブラウザで確認してみよう `gh repo view –w` 2021/5/10 38
$ gh repo view -w
@Kotokaze__R タイポを直してみる ✓ Nano エディタで開く → `nano README.md` ✓ 編集終了(保存)
`Ctrl + X` → `Y` → `Enter` 2021/5/10 39 $ nano README.md
@Kotokaze__R タイポを直してみる② 3. 変更をステージング & コミット 4. GitHub に上げてみよう 2021/5/10
40 $ git add ./README.md $ git commit –m “:pencil2: Update README” $ git push origin master
@Kotokaze__R 復習しよう 1. 編集を加える 2. ステージング & ローカル Repo へ保存
3. リモート Repo へ保存 2021/5/10 41 $ echo “Hello” > tmp.txt $ git add tmp.txt $ git commit –m “:tada: Add new file” $ git push orgin master
@Kotokaze__R ブランチ編 ブランチ機能を使ってみる 2021/5/10 42 パート②
@Kotokaze__R ブランチ機能 ✓ 履歴の流れを分岐させる (=ブランチを切る) 機能 ✓ 現状を複製できる → スライド4
の画像に近い結果が得られる ✓ コマンド: 2021/5/10 43 $ git branch ${ブランチ名}
@Kotokaze__R ブランチ (実践) 1. ブランチを切る (複製を作る) 2. 開発用ブランチに移動 3. ブランチの確認
2021/5/10 44 $ git branch dev $ git checkout dev $ git branch * dev master A master dev (A)
@Kotokaze__R ブランチ (実践)② 4. 編集を加える 5. dev ブランチに Commit 6.
状況を確認 2021/5/10 45 $ echo “test” > tmp.txt $ git add tmp.txt $ git commit A master dev B $ git status
@Kotokaze__R ブランチ (実践)③ 7. リモート Repo へ 8. master へ戻る
9. master へ反映させる 2021/5/10 46 $ git push origin dev $ git checkout master A master dev B $ git marge --no-ff B’ ※ ff: fast-forward でマージすると master で編集したかのように振る舞う (修正が困難になる)
@Kotokaze__R リモート編 GitHub 上のデータを操作してみる 2021/5/10 47 パート③
@Kotokaze__R イメージ 2021/5/10 48 リモートリポジトリ (GitHub など) ワークスペース Clone ローカルリポジトリ
自動展開 変更履歴 含む Commit
@Kotokaze__R クローンについて ✓ リモート Repo を基に、ローカル Repo を作成 → 履歴を保持したまま、別環境で作業できる
✓ GitHub CLI を使う場合 ✓ 従来のやり方 2021/5/10 49 $ gh repo clone (${ユーザ名}/)${Repo名} $ git clone
[email protected]
:${ユーザ名}/${Repo名}
@Kotokaze__R 実践編 今回用意した、 RiSec/git-workshop を使ってみよう 1. ローカル Repo に複製 2.
中を確認してみる 2021/5/10 50 $ cd ~/workspace $ gh repo clone RiSec/git-workshop $ cd git-workshop $ ls -a .git .gitignore README.md data src
@Kotokaze__R 実践編 ② 3. ブランチの作成 ・ 切り替え 4. src 内の
sample.c を見てみる 2021/5/10 51 ├── .git ├── .gitignore ├── README.md ├── data │ └── .gitkeep └── src └── sample.c $ cd src $ gcc –o sample.out sample.c $ ./sample.out Hollo World! $ git branch –b ${ブランチ名}
@Kotokaze__R 実践編 ③ 3. Typo を修正する 4. 修正を記録する 5. プルリクを作成する
(修正依頼を出す) 2021/5/10 52 ├── .git ├── .gitignore ├── README.md ├── data │ └── .gitkeep └── src └── sample.c $ git add sample.c $ git commit $ nano sample.c $ gh pr create
@Kotokaze__R プルリクについて ✓ GitHub 独自の機能 ✓ master ブランチで、マージを直接すると不具合修正が困難 → Pull
Request なら、マージ前に編集概要の確認をできる 2021/5/10 53 A master dev B Pull Request
@Kotokaze__R Git & GitHub 発展編 Fork / Commit のオプション /
Commit comments 2021/5/10 54
@Kotokaze__R 他の人の Repo に、 直接コミットをしたくないとき 2021/5/10 55
@Kotokaze__R Fork のイメージ 2021/5/10 56 ワークスペース 個人の リモート Repo Clone
ローカル Repo 自動展開 リモート Repo Fork
@Kotokaze__R フォークについて ✓ GitHub 独自の機能 ✓ 他者が作ったリポジトリを、自分のリポジトリとして登録 → 本家の編集に左右されずに開発できる ✓
使い方 → 2021/5/10 57 $ gh repo fork ${ユーザ名}/${Repo名}
@Kotokaze__R コミットした後に、 ミスに気づくことありませんか? 2021/5/10 58
@Kotokaze__R オプションを活用しよう ✓ commit には、前回のコミットを書き換えるエイリアスがある ✓ 手順 1: 間違いを修正をし、通常通りステージする 2:
コミット時に、 `--amend` オプションをつける 2021/5/10 59 $ git commit --amend $ git add ${ファイル}
@Kotokaze__R 適当なコミット ・ コメント 付けていませんか? 2021/5/10 60
@Kotokaze__R コメント規則を作ろう! ✓ 絵文字でジャンル分け ✓ 言語は統一 (英語) → 共同開発に対応 ✓
大文字始まり 2021/5/10 61
@Kotokaze__R テンプレートを使おう ! ✓ Git には、 commit template を設定する機能がある ✓
`-m` オプション無しで commit するとヒントとして表示 ✓ サンプル → https://gist.github.com/Kotokaze/845472cc49a4ad204424a8a56349c901 ✓ 設定方法 `git config commit.template <ファイルへのパス>` 2021/5/10 62 $ git config --global commit.template ${ファイルへのパス}
@Kotokaze__R 参考資料 ✓ Git Pro, 2nd ed. (Git 公式ブック) →
https://git-scm.com/book/ja/v2 ✓ Git 説明資料 → https://scrapbox.io/interaction-lab-git/ ✓ GitHub CLI → https://github.com/cli/cli 2021/5/10 63