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
リモートリポジトリの操作 / GitHub Remote
Search
kaityo256
PRO
October 08, 2021
Education
2.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リモートリポジトリの操作 / GitHub Remote
物理情報工学ソフトウェア開発演習
kaityo256
PRO
October 08, 2021
More Decks by kaityo256
See All by kaityo256
What is XAI?
kaityo256
PRO
0
170
勾配ブースティングと決定木の話 / gradient boosting and decision trees
kaityo256
PRO
7
1.8k
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
6k
この講義について / 00-setup
kaityo256
PRO
2
510
GitHubによるWebアプリケーションのデプロイ / 07-github-deploy
kaityo256
PRO
2
420
演習:Gitの基本操作 / 04-git-basic
kaityo256
PRO
1
670
演習:Gitの応用操作 / 05-git-advanced
kaityo256
PRO
1
390
演習:GitHubの基本操作 / 06-github-basic
kaityo256
PRO
1
490
バージョン管理とは / 01-a-vcs
kaityo256
PRO
2
480
Other Decks in Education
See All in Education
[2026前期火5] 論理学(京都大学文学部 前期 第10回)「論理学の哲学——意味とは何か(Tonkと推論主義)」
yatabe
0
300
[2026前期火5] 論理学(京都大学文学部 前期 第6回)「かつとまたはの規則」
yatabe
0
510
Examen de Selectividad. Geografía julio 2026 (Convocatoria Extraordinaria). UCLM
juanmartin2026
1
13k
Geografía y fútbol. Atlanta. la megalópolis del fútbol
juanmartin2026
1
12k
[2026前期火5] 論理学(京都大学文学部 前期 第9回)「正規化の停止性——ヒドラゲームによる証明」
yatabe
0
270
形骸化しない社内勉強会の取り組み - オーナーシップの作り方 / In-house study session
soudai
PRO
1
270
NDIAS Automotive / IoT CTF 2026 Recap - Keyfob & OSINT
himitu23
0
340
セキュリティ担当がいない中小医療機関を院外のRISSはどう支えるべきか / How External RISS Can Help Small Medical Institutions
eller86
0
200
Visionary Initiative: Future Intelligence — Laying the foundations for the future of science, intelligence, and society | Science Tokyo
sciencetokyo
PRO
0
320
AIってなぁに?
kenichiota0711
0
810
Soluciones al examen de Geografía 2026. JUNIO (Convocatoria Ordinaria)
juanmartin2026
1
10k
!コスパよくインターンに受かる方法!
ruribou
1
360
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Ruling the World: When Life Gets Gamed
codingconduct
0
330
The agentic SEO stack - context over prompts
schlessera
0
930
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Done Done
chrislema
186
16k
Ethics towards AI in product and experience design
skipperchong
2
370
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
Transcript
1 27 リモートリポジトリの操作 慶應義塾大学理工学部物理情報工学科 渡辺 物理情報工学ソフトウェア開発演習
2 27 • リモートリポジトリの操作について学ぶ • 特に、以下について理解する • どのコマンドでどのブランチが動くか • どのコマンドでどこが同期されるか
• ローカルとリモートの状態の変化
3 27 • Gitはローカルに全ての情報を持ち、履歴を管理できる • しかし、多人数開発の時には、「開発に関わるみんな」が参 照可能な場所にリポジトリが欲しい • 個人開発でも、「どこからでもアクセスできる場所」にリポ ジトリがあると便利
リモートリポジトリ
4 27 .git リモートリポジトリ .git ローカルリポジトリ (ワーキングツリーを 持たないベアリポジトリ) ワーキングツリー .git
ローカルリポジトリ ワーキングツリー
5 27 .git リモートリポジトリ • どこからでもアクセスしたい • 認証をきっちりしたい • 自分で作りたくない
ホスティングサービス .git .git ホスティングサービス 企業がサーバを貸し出すサービス メールやウェブサーバ、データなど Gitのホスティングサービスを提供するのがGitHub ※ 他にGitLabやBitBucketなど
6 27 中央リポジトリ • プロジェクトメンバーで共有するリモートリポジトリ • 通常、リモートリポジトリはこれ一つ • Gitは複数のリモートリポジトリに名前をつけて管理で きるが、通常はoriginというリモートリポジトリ一つで
運用 • Gitホスティングサービスに置くことが多い • リモートリポジトリは一つ • 名前はorigin • 置き場所はGitHub 本講義では今後、以下を前提とする
7 27 ワーキングツリーを持たないリポジトリのこと 通常のリポジトリの.gitディレクトリがトップレベルディレ クトリになったような中身 「プロジェクト名.git」という名前とする .git ローカルリポジトリ ワーキングツリー リモートリポジトリ
project project.git 例: projectというプロジェクトなら、リモートリポジトリはproject.gitにする ※ git init --bare で作成可能だが、自分で作ることはほとんどない
8 27 .git リモートリポジトリ リモートリポジトリにアクセスするためには 「場所」「方法」「本人確認」が必要 場所 方法 本人確認 どこにあるか?
どう通信するか? 確かに本人か?
9 27 URL (Uniform Resource Locator) インターネットにおける「住所」 例えば https://www.github.comなど プロトコル
ここではインターネットにおける通信手段のこと GitHubへのアクセスは、「SSH」か「HTTPS」 SSH (Secure Shell) HTTPS (Hypertext Transfer Protocol Secure) 認証方法は「公開鍵認証」←本講義ではこちらを使う 認証方法は「個人アクセストークン」
10 27 .git リモートリポジトリ fetch & merge (初回はclone) push .git
ローカルリポジトリ .git ローカルリポジトリ commit 赤字がリモートとやりとりするコマンド
11 27 main リモートリポジトリ main ローカルリポジトリ ワーキングツリー .git $ git
clone URL/to/remote.git リモートの「歴史」を持ってきて 最新のワーキングツリーを展開する
12 27 URLで指定されたリモートリポジトリから歴史をローカル に持ってきて、ワーキングツリーを展開する $ git clone リモートリポジトリのURL GitHubのappi-githubというアカウントのclone-sampleをクローンしたい場合 $
git clone https://github.com/appi-github/clone-sample.git $ git clone
[email protected]
:appi-github/clone-sample.git HTTPS SSH アカウント名 リポジトリ名 カレントディレクトリにclone-sampleというディレクトリが作成され、 そこにワーキングツリーが展開される
13 27 git push ローカルリポジトリ リモートリポジトリ ローカルで変更された「歴史」をリモートに反映させる ローカルリポジトリ リモートリポジトリ
14 27 git fetch ローカルリポジトリ リモートリポジトリ リモートで変更された「歴史」をローカルに取ってくる ローカルリポジトリ リモートリポジトリ
15 27 main リモートリポジトリ main origin/main ローカルリポジトリ main origin/main fetch
merge フェッチは歴史を取ってくるだけ リモートのmainは「origin/main」 マージすることで修正を取り込む
16 27 • Gitでは、全てのリポジトリが全ての履歴を持つ • リモートリポジトリにアクセスして、歴史の 「同期」を取る必要がある 「上流ブランチ」と「リモート追跡ブランチ」を使う .git リモートリポジトリ
17 27 main リモートリポジトリ(origin) main origin/main ローカルリポジトリ 上流 (upstream) リモート追跡
(remote-tracking) ローカルのmainの上流ブランチがローカルのorigin/main ローカルのorigin/mainは、リモート(origin)のmainを追跡 上流ブランチはfetch, merge, rebaseでデフォルトの対象ブランチとなる
18 27 main リモートリポジトリ(origin) main origin/main ローカルリポジトリ main origin/main +
$ git fetch origin/mainは動くが、mainは動かない HEAD HEAD $ git fetch origin main =
19 27 main origin/main HEAD main origin/main HEAD $ git
merge $ git merge origin/main = ローカルリポジトリ ローカルリポジトリ マージして初めてローカルのmainが動く マージのデフォルト対象は上流ブランチ
20 27 main origin/main ローカルリポジトリ main リモートリポジトリ(origin) $ git push
main main origin/main + $ git push origin main =
21 27 git fetch、git pushによりローカルのブランチは動かない 動くのはローカルにある上流ブランチ git merge, rebaseではローカルのブランチのみ動く リモートのmainとローカルのorigin/mainが同じ状態に
ローカルのmainとローカルのorigin/mainが同じ状態に ローカルのmain,origin/main、リモートのmainが同じ状態に 動くもの、動かないもの 同期するもの どのコマンドで何が動くか、何が同期されるのかを把握すること git fetch: git merge: git push :
22 27 main リモートリポジトリ main origin/main ローカルリポジトリ main origin/main fetch
merge $ git pull フェッチとマージを続けて行う 事故が起こりやすいので、慣れるまでは使わないこと
23 27 リモートリポジトリの設定、変更、削除、表示を行う $ git remote -v リモートリポジトリのURLに名前(通常はorigin)を付けて登録 GitHubにローカルリポジトリを登録する際に必要 その後、上流ブランチを設定しながらプッシュする
origin https://github.com/appi-github/clone-sample.git (fetch) origin https://github.com/appi-github/clone-sample.git (push) 実行例→ $ git remote add 名前 URL リモートリポジトリのURLを表示 $ git push –u origin main
24 27 c1 c2 c3 main c1 c2 main c4
リモートリポジトリ(origin) main ローカルリポジトリ c1 c2 c3 rebaseによる 歴史改変 $ git push c1 c2 c3 main リベースにより歴史がリモートと矛盾するとプッシュできなくなる
25 27 c1 c2 c3 main c1 c2 main c4
リモートリポジトリ(origin) main ローカルリポジトリ c1 c2 c3 rebaseによる 歴史改変 $ git push -f 強制プッシュ c1 c2 main c4 強制プッシュ(-f)により、歴史を上書きできる
26 27 リモートリポジトリ(origin) c1 c2 main c4 c3 main origin/main
ローカルリポジトリ c1 c2 c3 上流 (upstream) リモート追跡 (remote-tracking) 改変された歴史が強制プッシュされると、他の人のリポジトリと歴史が矛盾する リモートにプッシュ済みのブランチをリベースしない
27 27 Gitにおける作業の流れ 1. git fetch によりリモートの更新をダウンロード 2. git mergeによりリモートの更新を取り込む
3. git switch -c newbranchにより新しいブランチを作成して作業開始 4. 作業が終了したらmainにマージ 5. git pushにより、ローカルの更新をアップロード Gitのリモートとローカル • どのコマンドでどのブランチが動くかは慣れるまで 把握しづらい • 「上流ブランチ」と「リモート追跡ブランチ」の挙 動に注目して理解すると良い