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

2018年新卒エンジニア研修 Git

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 2018年新卒エンジニア研修 Git

Avatar for norinux

norinux

May 09, 2018
Tweet

More Decks by norinux

Other Decks in Technology

Transcript

  1. アジェンダ • 研修の目的(3min) • Gitとは(10min) • さあGitをはじめよう!(30min) • Gitの概念(10min) •

    さらにGitを使ってみよう(45min) • 管理したくないファイル!?(10min) • 歴史の改ざん・・・?(20min) • GitHubを利用してみよう!(45min) • ブランチの豆知識(10min)
  2. Git Git(ギット)は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散 型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるために リーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されて いる。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が 置かれている。現在のメンテナンスは濱野純 (Junio C Hamano) が担当している。

    Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製 が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリに アクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うこ とができる。これが「分散型」と呼ばれる理由である。 Wikipedia:Git https://ja.wikipedia.org/wiki/Git より引用
  3. 基本操作 1. Gitで管理するディレクトリを作る 2. Gitで管理する 3. テキストファイルを作成(何か書き込む) 4. ファイルの変更をGitに伝える 5.

    変更した内容を記録する 6. ファイルの内容を変更する 1 7. 変更したファイルの変更をGitに伝える 8. 変更した内容を記録する 9. ファイルの内容を変更する 2 10. 変更したファイルの変更をGitに伝える 11. 変更した内容を記録する 12. 変化があることを知る 13. --onelineオプションを使ってみる 14. ファイルを削除する 15. 最新の一つ前の状態に復元する 16. 最新の状態に復元する
  4. 大切な3つの領域 Gitには「作業フォルダ」「インデックス」「リポジトリ」の3つの領域がある。それぞれの領 域がどのように変化するのか正確に想像できると捗ります。 • 作業フォルダ ◦ OSが管理するファイルシステムのデータ保存場所で実際にターミナルなどから操作する。 • インデックス ◦

    `git add` したときにGit形式のフォーマットで変更されたファイル情報を一時的に保存しておく場所。 • リポジトリ ◦ Gitが変更の歴史を蓄えている場所。コミットすると、Gitはそお時点のインデックスの状態を歴史の1 ページとしてリポジトリに追加する。 [導入メモ] GitHubを使うために、SVNユーザーがGitを調べた https://havelog.ayumusato.com/develop/others/e185-github-practice.html より引用
  5. さらに操作してみる 1. ファイル名を指定しないでコミットする 2. addとcommitを同時に行う 3. 新しいファイルを作成しコミットをする(-mオプションを利用しない) 4. コミットを中止する 5.

    インデックスの余分な変更をなかったことにする 6. 2つめのファイルを削除する 7. ファイルを変更する 8. 変更したファイルを最新のコミットに戻す 9. ヘルプを利用してみる 10. 最新のコミットメッセージを編集する 11. ファイルを変更する 12. 同じような編集なのでコミットログを増やさないでコミットしたい 13. ファイル名を変更してコミットする 14. 元のファイル名に戻す
  6. 特殊なファイル Gitの管理下におきたくないファイルは、管理から除外する必要があります。例えばMac でfinderでファイルを操作したときに生成される.DS_Storeなど。 除外する方法は3つ 1. project/.gitignore a. プロジェクトを共有するメンバー全員が無視するべきファイルを設定できる。メンバー全員に関わる ものはここに登録する。 2.

    project/.git/info/excude a. 自分の環境のみに影響があるファイルはこちらに設定する 3. git config --global core.excludesfile $HOME/.gitexcludeと設定して $HOME/.gitexcludeに登録する a. ログイン中のユーザー全てで無視するファイルとして登録する
  7. git-flow Git flowでは、それぞれ役割が振られているmaster, release, develop, feature, hot-fixの 5つのブランチを使い分けて、開発を進めていきます。 • feature

    ◦ 開発をおこなうためのブランチで、個々の機能 の実装やバグの解決をおこなう • develop ◦ 開発をおこなうためのブランチ • release ◦ リリース前に準備、微調整をおこなうブランチ • master ◦ リリースしたデータを置いておくブランチ • hot-fix ◦ リリースされているデータに、緊急の修正対応 をするためのブランチ LIG:Gitを最大限に活用できる 「Git flow」で、効率よく開発を進めよう! https://liginc.co.jp/248864 より引用
  8. GitHub Flow • masterブランチのものは何であれデプロイ可能である • 新しい何かに取り組む際は、説明的な名前のブランチをmasterから作成する(例: new-oauth2-scopes) • 作成したブランチにローカルでコミットし、サーバー上の同じ名前のブランチにも定 期的に作業内容をpushする

    • フィードバックや助言が欲しい時、ブランチをマージしてもよいと思ったときは、 プル リクエスト を作成する • 他の誰かがレビューをして機能にOKを出してくれたら、あなたはコードをmasterへ マージすることができる • マージをしてmasterへpushしたら、直ちにデプロイをする