Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
リモートリポジトリの操作 / GitHub Remote
Search
kaityo256
PRO
October 08, 2021
Education
1
2.6k
リモートリポジトリの操作 / GitHub Remote
物理情報工学ソフトウェア開発演習
kaityo256
PRO
October 08, 2021
Tweet
Share
More Decks by kaityo256
See All by kaityo256
卒論の書き方 / Happy Writing
kaityo256
PRO
49
26k
生成AIとの付き合い方 / Generative AI and us
kaityo256
PRO
11
6.1k
モンテカルロ法(3) 発展的アルゴリズム / Simulation 04
kaityo256
PRO
10
1.6k
UMAPをざっくりと理解 / Overview of UMAP
kaityo256
PRO
9
3.4k
SSH公開鍵認証による接続 / Connecting with SSH Public Key Authentication
kaityo256
PRO
7
670
論文紹介のやり方 / How to review
kaityo256
PRO
17
88k
デバッグの話 / Debugging for Beginners
kaityo256
PRO
17
1.8k
ビット演算の話 / Let's play with bit operations
kaityo256
PRO
8
660
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.5k
Other Decks in Education
See All in Education
ロータリー国際大会について~国際大会に参加しよう~:古賀 真由美 会員(2720 Japan O.K. ロータリーEクラブ・(有)誠邦産業 取締役)
2720japanoke
1
720
沖ハック~のみぞうさんとハッキングチャレンジ☆~
nomizone
1
500
Портфолио - Шынар Ауелбекова
shynar
0
140
Requirements Analysis and Prototyping - Lecture 3 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.3k
Software
irocho
0
630
Entrepreneurship minor course at HSE 2025
karlov
0
140
QR-koodit opetuksessa
matleenalaakso
0
1.7k
3Dプリンタでロボット作るよ#5_ロボット向け3Dプリンタ材料
shiba_8ro
0
120
~キャラ付け考えていますか?~ AI時代だからこそ技術者に求められるセルフブランディングのすゝめ
masakiokuda
7
530
とある長岡高専卒のおっさんがIT企業のマネージャーになるまで / journey-from-nagaoka-kosen-grad-to-it-manager
masaru_b_cl
0
160
ThingLink
matleenalaakso
28
4.2k
Présentation_2nde_2025.pdf
bernhardsvt
0
360
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Become a Pro
speakerdeck
PRO
30
5.7k
A better future with KSS
kneath
240
18k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Being A Developer After 40
akosma
91
590k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
The Language of Interfaces
destraynor
162
25k
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
69k
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のリモートとローカル • どのコマンドでどのブランチが動くかは慣れるまで 把握しづらい • 「上流ブランチ」と「リモート追跡ブランチ」の挙 動に注目して理解すると良い