cookpad summer internship 2018 - Git

cookpad summer internship 2018 - Git

18b12f8f7910445b2637f0f21f59d467?s=128

Kazuhito Hokamura

September 18, 2018
Tweet

Transcript

  1. Git/GitHub クックパッド サマーインターンシップ 10 Day Tech for service engineers

  2. Git使ったことある人

  3. この講義の内容 • Git/GitHubを使ったチーム開発での流れを理解する • Cookpadでのルールやワークフローを知る

  4. Git

  5. Git • 分散型のバージョン管理システム • Linuxの作者であるLinus Torvaldsによって開発された

  6. Reference •Gitコマンドの使い方を調べる ‣ https://git-scm.com/docs ‣ git help •Gitを体系的に学ぶ ‣ https://git-scm.com/book/en/v2

  7. •ユーザー設定 $ git config --global user.name "Your full name" $

    git config --global user.email "your email address" •リポジトリ作成 $ mkdir -p ~/works/git-practice $ cd ~/works/git-practice $ git init •コミット $ echo '# Hello cookpad!' > README.md $ git add README.md $ git commit -m 'Add README.md'
  8. コミットメッセージ •コミットメッセージは英語で書く(社内ルール) •1行目に概要を書く •必要に応じて3行目以降に詳細を書く

  9. Branch

  10. Branchとは •履歴を枝分かれさせることができる •複数の機能を同時に開発することができる •枝分かれした履歴は特定の枝(branch)に合流 (merge)することができる

  11. None
  12. •新しくブランチを作って切替 $ git branch new-branch $ git checkout new-branch •まとめてやる

    $ git checkout -b new-branch
  13. merge •Gitは 3-way merge という賢いマージのアルゴリズム でマージする •2つのファイルを単純に比較するのではなくそれぞれの 共通の親と差分を比較する

  14. merge $ git checkout master $ git merge new-branch [--ff/--no-ff]

  15. None
  16. None
  17. None
  18. fast forward merge

  19. --no-ff

  20. ff vs no-ff •Pull Requestのマージは merge commitをつくる •GitHubのUIからマージする
 場合はデフォルト no-ff

  21. Recovery

  22. •間違えてaddした $ git reset [<path/to/file>] •間違えてコミットした $ git reset HEAD^

    •間違えてファイルを編集したり消してしまったので元に戻したい $ git checkout <path/to/file> $ git checkout .
  23. •ブランチ名間違えた $ git branch -m new-branch-name •バグがあるコードをmasterにマージしてしまったので取り消したい $ git revert

    -m 1 <merge-commit> •間違えてコミットを取り消した、マージしてないブランチを
 消してしまった $ git reflog $ git reset --hard <SHA1>
  24. GitHub

  25. GitHub •Gitのリモートリポジトリをホスティングするサービス •開発時に便利な様々な機能がある •現代の開発フローにおける中心的存在 •CookpadではGitHub Enterprise(GHE)を利用

  26. ForkとPull Request •Fork ‣ 他の人のリモートリポジトリを自分のリポジトリとして コピーする機能 •Pull Request ‣ 自分が行った変更を元のブランチに取り込んでもらえる

    ように通知する機能
  27. GitHub Work Flow 1. 変更対象のリポジトリをForkしてclone 2. branchを切って変更をcommit, push 3. Pull

    Request 4. コードレビュー 5. マージ
  28. tech/cookpad_all your-name/cookpad_all Local Fork Pull Request push pull upstream origin

  29. •forkしたリポジトリを手元にコピーする $ git clone git@ghe.ckpd.co:your-name/repo.git •作業ブランチを切る $ git checkout -b

    new-feature •変更をリモートリポジトリに反映する $ git commit -m $ git push origin new-branch
  30. •upstreamのリモートリポジトリを設定 $ git remote add upstream git@ghe.ckpd.co:owner/repo.git •リモートリポジトリの設定を確認 $ git

    remote -v •最新の状態を手元に持ってくる $ git checkout master $ git pull upstream master
  31. Practice

  32. 1. summer-intern/self-introduction をfork 2. 作業用ブランチを切る 3. "your-name.md" というファイルを作って簡単な自己紹介を書く 4. 変更をPushしてPull

    Requestを作成 5. マージされたらupstreamから最新の状態をローカルに反映する