Upgrade to Pro — share decks privately, control downloads, hide ads and more …

リモートリポジトリの操作 / GitHub Remote

kaityo256
October 08, 2021

リモートリポジトリの操作 / GitHub Remote

物理情報工学ソフトウェア開発演習

kaityo256

October 08, 2021
Tweet

More Decks by kaityo256

Other Decks in Education

Transcript

  1. 5 27 .git リモートリポジトリ • どこからでもアクセスしたい • 認証をきっちりしたい • 自分で作りたくない

    ホスティングサービス .git .git ホスティングサービス 企業がサーバを貸し出すサービス メールやウェブサーバ、データなど Gitのホスティングサービスを提供するのがGitHub ※ 他にGitLabやBitBucketなど
  2. 6 27 中央リポジトリ • プロジェクトメンバーで共有するリモートリポジトリ • 通常、リモートリポジトリはこれ一つ • Gitは複数のリモートリポジトリに名前をつけて管理で きるが、通常はoriginというリモートリポジトリ一つで

    運用 • Gitホスティングサービスに置くことが多い • リモートリポジトリは一つ • 名前はorigin • 置き場所はGitHub 本講義では今後、以下を前提とする
  3. 9 27 URL (Uniform Resource Locator) インターネットにおける「住所」 例えば https://www.github.comなど プロトコル

    ここではインターネットにおける通信手段のこと GitHubへのアクセスは、「SSH」か「HTTPS」 SSH (Secure Shell) HTTPS (Hypertext Transfer Protocol Secure) 認証方法は「公開鍵認証」←本講義ではこちらを使う 認証方法は「個人アクセストークン」
  4. 10 27 .git リモートリポジトリ fetch & merge (初回はclone) push .git

    ローカルリポジトリ .git ローカルリポジトリ commit 赤字がリモートとやりとりするコマンド
  5. 11 27 main リモートリポジトリ main ローカルリポジトリ ワーキングツリー .git $ git

    clone URL/to/remote.git リモートの「歴史」を持ってきて 最新のワーキングツリーを展開する
  6. 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というディレクトリが作成され、 そこにワーキングツリーが展開される
  7. 15 27 main リモートリポジトリ main origin/main ローカルリポジトリ main origin/main fetch

    merge フェッチは歴史を取ってくるだけ リモートのmainは「origin/main」 マージすることで修正を取り込む
  8. 17 27 main リモートリポジトリ(origin) main origin/main ローカルリポジトリ 上流 (upstream) リモート追跡

    (remote-tracking) ローカルのmainの上流ブランチがローカルのorigin/main ローカルのorigin/mainは、リモート(origin)のmainを追跡 上流ブランチはfetch, merge, rebaseでデフォルトの対象ブランチとなる
  9. 18 27 main リモートリポジトリ(origin) main origin/main ローカルリポジトリ main origin/main +

    $ git fetch origin/mainは動くが、mainは動かない HEAD HEAD $ git fetch origin main =
  10. 19 27 main origin/main HEAD main origin/main HEAD $ git

    merge $ git merge origin/main = ローカルリポジトリ ローカルリポジトリ マージして初めてローカルのmainが動く マージのデフォルト対象は上流ブランチ
  11. 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 :
  12. 22 27 main リモートリポジトリ main origin/main ローカルリポジトリ main origin/main fetch

    merge $ git pull フェッチとマージを続けて行う 事故が起こりやすいので、慣れるまでは使わないこと
  13. 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
  14. 24 27 c1 c2 c3 main c1 c2 main c4

    リモートリポジトリ(origin) main ローカルリポジトリ c1 c2 c3 rebaseによる 歴史改変 $ git push c1 c2 c3 main リベースにより歴史がリモートと矛盾するとプッシュできなくなる
  15. 25 27 c1 c2 c3 main c1 c2 main c4

    リモートリポジトリ(origin) main ローカルリポジトリ c1 c2 c3 rebaseによる 歴史改変 $ git push -f 強制プッシュ c1 c2 main c4 強制プッシュ(-f)により、歴史を上書きできる
  16. 26 27 リモートリポジトリ(origin) c1 c2 main c4 c3 main origin/main

    ローカルリポジトリ c1 c2 c3 上流 (upstream) リモート追跡 (remote-tracking) 改変された歴史が強制プッシュされると、他の人のリポジトリと歴史が矛盾する リモートにプッシュ済みのブランチをリベースしない
  17. 27 27 Gitにおける作業の流れ 1. git fetch によりリモートの更新をダウンロード 2. git mergeによりリモートの更新を取り込む

    3. git switch -c newbranchにより新しいブランチを作成して作業開始 4. 作業が終了したらmainにマージ 5. git pushにより、ローカルの更新をアップロード Gitのリモートとローカル • どのコマンドでどのブランチが動くかは慣れるまで 把握しづらい • 「上流ブランチ」と「リモート追跡ブランチ」の挙 動に注目して理解すると良い