2022/05/18

Git / GitHub 入門講座

RICORA Programming Team

© 2022 RICORA Programming Team
2022/05/18

今日やること

  • バージョンコントロールシステムであるGitの使い方を学ぶ
  • GitリポジトリのホスティングサービスであるGitHubを使ってみる
© 2022 RICORA Programming Team
2022/05/18

Gitってなに?

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

  • 要約すると「Gitは早くて効率的なオープンソース分散型バージョンコントロールシステム」

  • それって実際どういうこと?🤔

© 2022 RICORA Programming Team
2022/05/18

Gitが作られた背景

  • 最近人間味が出てきたことLinuxの製作者Linus Torvaldsが作った

  • メールで送られてくるパッチを早くマージしてかつトラッキングするツールがほしかったらしい

w: 50 Linus Torvalds (©Gigazine.net)

© 2022 RICORA Programming Team
2022/05/18

メリット

  • 早い

    • サーバーから拾ってくるときにそんなに時間がかからない
  • ログを追える

    • このファイルはどこで変更されて...みたいなことがわかる
  • 複数人での開発に向く

    • 各人が開発した成果を持ち寄りやすい
  • 管理するファイルを選べる

    • .DS_Storeとかを含まないようにできる
© 2022 RICORA Programming Team
2022/05/18

Gitを用いた開発フロー

  1. clone とか fork & ブランチ分ける

  2. add & commit 実質的な開発

  3. push
    リモートサーバーに現在のリポジトリの状態を通知

  4. Pull Request (GitHub利用)
    main / masterに機能追加してください!と頼む

  5. merge 機能追加

  6. 0-4の繰り返し

© 2022 RICORA Programming Team
2022/05/18

GitHubってなに?

  • Gitリポジトリのホスティングサービスの1つ
    • Git ≠ GitHub
  • リポジトリ置き場としての機能だけではなく、チーム開発に便利な機能がたくさん
    • 便利なのでリモートリポジトリにはGitHubが使われることが多い
  • ↓はGitHubのキャラクターのOctocat
© 2022 RICORA Programming Team
2022/05/18

Clone & Fork

  • cloneはその名の通りクローン=コピーをとってくる

  • めっちゃcloneすることが多い 基本構文は

    $ git clone (repo url)
    
  • forkはもとのリポジトリを自分のとこにコピー

    • そこから自分で機能追加とかできる
© 2022 RICORA Programming Team
2022/05/18

Clone & Fork

  • これで開発の準備ができる

  • 例えばlogを見てみる(あとでこれが何をするか説明)

    $ git log -p
    
    • なんかログっぽいのが出る
© 2022 RICORA Programming Team
2022/05/18

Add & Commit (大事!)

  • add : Gitに管理を頼む 変更を加えたファイルを選ぶ

  • commit : 現在のスナップショットを保存
    このスナップショットについてメッセージも書く(ログ)

(©git-scm.com)

© 2022 RICORA Programming Team
2022/05/18

Add

  • どのファイルをgitに管理してもらうかを指定できる

  • 絶対に無視したいファイルもある → .gitignoreで指定

  1. ファイル指定でadd(推奨)

    $ git add (something)
    
  2. ファイル全体をadd(非推奨)

    $ git add .
    
© 2022 RICORA Programming Team
2022/05/18

Commit

  • 今の状態を保存するように頼む

  • コミットログを書く=なにを変更したのかを書く

  • コマンドは

    git commit -m (message)
    
  • 過去のコミットはこれで追う

    git log
    
© 2022 RICORA Programming Team
2022/05/18

Branch

  • これだけだとDriveとかとあんまり変わらない 特色はBranch

Gitのブランチ

  • ブランチ?

    • 別の世界線 = 別の履歴のこと ヽ(*゚д゚)ノカイバー
    • ブランチごとにadd/commitする
    • 履歴を分離させることで機能別に開発ができる
  • 機能ごとにBranchを分割 => master / mainに追加を繰り返す

    • 例: docs/readmeとか
© 2022 RICORA Programming Team
2022/05/18

Branch

  • 切り替え

    git switch (branch name)
    
  • 新規作成

    git switch -c (branch name)
    
  • あとはman git-branchで検索

© 2022 RICORA Programming Team
2022/05/18

んにゃぴ...よくわかんないっす

  • それはそう

  • Git

    • 様々なブランチにコミット → mainとかに取り込んでもらう
      コミットの履歴がある
  • Driveとか

    • 適当にファイルを入れる → 何が変更されたのかわからない
      規模がでかくなると削除とかでぐちゃぐちゃになりがち

➡ Git使ったほうがよさそう(と思ってほしい)

© 2022 RICORA Programming Team
2022/05/18

リモートサーバーとかの話

  • もちろん当時からLinuxは複数人で開発されていた
  • Gitの威力はリモートサーバーがあるからこそ発揮される
© 2022 RICORA Programming Team
2022/05/18

Clone

  • 再掲。リモートサーバーからリポジトリごと拾ってくる。
    git clone
    
© 2022 RICORA Programming Team
2022/05/18

Push

  • サーバーに変更分を通知
  • あっち側にもBranchがあるので指定が必要(最初だけ)
  1. 現在のBranchからPushしたことがない

    git push --set-upstream (remote branch name)
    
  2. Pushしたことがある

    git push
    
© 2022 RICORA Programming Team
2022/05/18

Fetch / Pull

ここらへんは名前だけ一旦覚えておく

  • fetch

    • リモートサーバーのBranchのHEADを拾ってくる。
  • pull

    • Fetch & Merge する。とりあえず更新するときに使うみたいなイメージ
© 2022 RICORA Programming Team
2022/05/18

Pull Request

さっきちょろっと出てきたあれ。既存のものに何か追加するときに使う

Pull Requestの出し方

  1. 先にブランチをpushしておく
  2. githubのリポジトリの右上のPull Requestをクリック
  3. 左上のcompareから自分のブランチを選ぶ。baseはmainにする
  4. 変更したことの大枠を書いて、Submit Pull Requestをクリック
  5. githubのリポジトリに戻って、Pull Requestの欄に自分が書いたものがあるか確認
© 2022 RICORA Programming Team
2022/05/18

全体の総括

  1. clone & ブランチ分けるswitch

  2. add & commit 実質的な開発

  3. push
    リモートサーバーに現在のリポジトリの状態を通知

  4. Pull Request (GitHub利用)
    main / masterに機能追加してください!と頼む

  5. merge 機能追加

  6. 0-4の繰り返し

© 2022 RICORA Programming Team
2022/05/18

余談: Pull Requestの出し方

  • 実は出し方が2種類ある

    • ブランチを使う方法

      別のブランチに変更を加える
      用例: 複数人での開発

    • forkする方法

      既存のリポジトリを複製して自分で変更を加える
      用例: OSSとかの機能改善

  • 今回は上の方です・サークルでなんかやるときはブランチで

© 2022 RICORA Programming Team
2022/05/18

やってみよう

実際に触ってみよう😉

やること

  1. 環境構築してgitを使えるようにする
  2. 演習とかでgitに触れてみる
© 2022 RICORA Programming Team
2022/05/18

Gitの前に

© 2022 RICORA Programming Team
2022/05/18

GitHubの準備

  • GitHubアカウントの作成

  • RICORA Organizationへの招待

    • 招待するのでGitHubのアカウント名を教えてください
    • 部員はここから新入部員をMemberで招待
© 2022 RICORA Programming Team
2022/05/18

GitHubの準備

  • GitHubにSSH公開鍵を登録しよう
  1. ホームディレクトリでssh-keygen -t ed25519を実行
  2. なにも入力せずEnter
  3. 公開鍵~/.ssh/id_ed25519.pubの内容をコピー
  4. https://github.com/settings/sshに公開鍵を登録
© 2022 RICORA Programming Team
2022/05/18

やってみよう

  • 演習を作りました

  • わかんなかったら聞いて🆗

  • スライドを開いて参照しよう

© 2022 RICORA Programming Team
2022/05/18

Gitクライアントについて

  • SourcetreeやGitKrakenなど、Git操作をGUIで行えるアプリケーションもあります
  • GUIでGit操作が行えるので、Gitのイメージが掴みにくい初心者でも、直感的な操作が可能になり、とっつきやすい…かも?
  • Gitが使えるようになるのが目的なので、どうしてもコマンド操作が苦手という人は調べてみてください
© 2022 RICORA Programming Team
2022/05/18

告知

  • Git練習用のリモートリポジトリを用意しました
  • 座学だけだと意味不明だと思うので、とりあえず使いながら覚えよう
© 2022 RICORA Programming Team
2022/05/18

ご清聴ありがとうございました

© 2022 RICORA Programming Team