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

cookpad summer internship 2018 - Git

cookpad summer internship 2018 - Git

Kazuhito Hokamura

September 18, 2018
Tweet

More Decks by Kazuhito Hokamura

Other Decks in Technology

Transcript

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

    View Slide

  2. Git使ったことある人

    View Slide

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

    View Slide

  4. Git

    View Slide

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

    View Slide

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

    View Slide

  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'

    View Slide

  8. コミットメッセージ
    •コミットメッセージは英語で書く(社内ルール)
    •1行目に概要を書く
    •必要に応じて3行目以降に詳細を書く

    View Slide

  9. Branch

    View Slide

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

    View Slide

  11. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. fast forward merge

    View Slide

  19. --no-ff

    View Slide

  20. ff vs no-ff
    •Pull Requestのマージは
    merge commitをつくる
    •GitHubのUIからマージする

    場合はデフォルト no-ff

    View Slide

  21. Recovery

    View Slide

  22. •間違えてaddした
    $ git reset []
    •間違えてコミットした
    $ git reset HEAD^
    •間違えてファイルを編集したり消してしまったので元に戻したい
    $ git checkout
    $ git checkout .

    View Slide

  23. •ブランチ名間違えた
    $ git branch -m new-branch-name
    •バグがあるコードをmasterにマージしてしまったので取り消したい
    $ git revert -m 1
    •間違えてコミットを取り消した、マージしてないブランチを

    消してしまった
    $ git reflog
    $ git reset --hard

    View Slide

  24. GitHub

    View Slide

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

    View Slide

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

    View Slide

  27. GitHub Work Flow
    1. 変更対象のリポジトリをForkしてclone
    2. branchを切って変更をcommit, push
    3. Pull Request
    4. コードレビュー
    5. マージ

    View Slide

  28. tech/cookpad_all your-name/cookpad_all
    Local
    Fork
    Pull Request
    push
    pull
    upstream origin

    View Slide

  29. •forkしたリポジトリを手元にコピーする
    $ git clone [email protected]:your-name/repo.git
    •作業ブランチを切る
    $ git checkout -b new-feature
    •変更をリモートリポジトリに反映する
    $ git commit -m
    $ git push origin new-branch

    View Slide

  30. •upstreamのリモートリポジトリを設定
    $ git remote add upstream [email protected]:owner/repo.git
    •リモートリポジトリの設定を確認
    $ git remote -v
    •最新の状態を手元に持ってくる
    $ git checkout master
    $ git pull upstream master

    View Slide

  31. Practice

    View Slide

  32. 1. summer-intern/self-introduction をfork
    2. 作業用ブランチを切る
    3. "your-name.md" というファイルを作って簡単な自己紹介を書く
    4. 変更をPushしてPull Requestを作成
    5. マージされたらupstreamから最新の状態をローカルに反映する

    View Slide