• Like
@s_ssk13さん向けGitHub入門
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

@s_ssk13さん向けGitHub入門

  • 9,402 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • 資料は本番では、「BitBucketでは 無料の公開リポジトリない 」といいましたが、あるそうです。
    https://twitter.com/kashew_nuts/status/456751915397697536
    勉強不足で申し訳ありませんでした。
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
9,402
On SlideShare
0
From Embeds
0
Number of Embeds
14

Actions

Shares
Downloads
56
Comments
1
Likes
27

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. @s_ssk13さん向け GitHub入門勉強会 @imagire
  • 2. 目的 • GitHub触れるようになりたい – UE4のサブスクリプション版がGitHubだったので – BugFixやフィードバックはどうすればいいの? • 本日のねらい – Gitの概念おさらい • Pull/Pushとかブランチとかリポジトリとか。 – フォークの使い方 – GitHubクライアントを使った時の例 By @s_ssk13
  • 3. アジェンダ • GitHubについて • Git について • Git-flow • Git のコマンド • GitHubの触り方 • やってみよう!
  • 4. アジェンダ • GitHubについて • Git について • Git-flow • Git のコマンド • GitHubの触り方 • やってみよう!
  • 5. GitHubって、新しい Subversionでしょ?
  • 6. Git Subversion GitHub ホスティング サービス バージョン 管理ツール ソフトウェアの 更新履歴の管理 複数プロジェクト を管理・提供
  • 7. WebSVN ローカルサーバー でのホスティング Subversionでの一例 有償・プライベート リポジトリ 有償・プライベート リポジトリ 無償・パブリック リポジトリ GitHub for Mac/ Windows クライアント バージョン管理ツール Git Subversion Git Bash Assembla SourceForge
  • 8. Git Bash • Windows 版のgitのディフォルトクライアント • コンソールアプリケーション – GitHub for Mac/Windows にもShellがある • ブランチ名の表示や色付けの拡張あり
  • 9. GitHub for Mac / windows • GitHub のデスクトップ用アプリケーション – GitHubのプロジェクトとのやり取りがしやすい
  • 10. • デスクトップアプリケーション – Git-flow ワークフローに乗せやすい – ツリー見やすい
  • 11. tortoisegit • Subversionでおなじみファイルエクスプロー ラーの拡張
  • 12. • GitHub Inc. によるプロジェクトホスティング サービス • プライベート用は GitHub Enterprise • Pull request によるマージ環境の整備 • OSS 公開に多く用いられる
  • 13. プラン
  • 14. • ホスティングサービス – 無料のプライベートプランあり
  • 15. Public repository 無料パブリックリポジトリ あり 無料パブリックリポジトリ なし Private repository 無料プライベートリポジトリ なし 無料プライベートリポジトリ あり 特徴から 導かれる こと ソースを公開しながら 開発を進めるのに適する 少人数でクローズドにした 開発をすることができる やりやすい 対象 オープンソース開発 少人数プロジェクト もちろん、必要に応じてお金を払いましょう あるそうです!
  • 16. アジェンダ • GitHubについて • Git について • Git-flow • Git のコマンド • GitHubの触り方 • やってみよう!
  • 17. Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License.
  • 18. はじめに • gitの知識が必要なのは? – GitHubの取り扱いの基礎
  • 19. バージョン管理ツール (主にソースコードの)履歴を保存 • 集中型バージョン管理システム – 例:Subversion, CVS, Perforce – サーバーに変更履歴を保存するリポジトリを置く • 修正した履歴は中央のサーバーに記録される • 分散バージョン管理システム – 例:Git, Mercurial, Bazaar – 全員が同じリポジトリを所有 • 高速にブランチが作成可能 • クライアントのHDD容量を消費しやすい
  • 20. バージョン管理 リポジトリ 更新 履歴 GitHubなど リポジトリ pull commit
  • 21. バージョン管理 リポジトリ 更新 履歴 GitHubなど リポジトリ リポジトリリポジトリ pull commit pull commit pull commit
  • 22. バージョン管理すると • ファイルを間違えて消した時も何とかなるかも • ソースコードが動かなくなっても元に戻せる • 他の人が上書きしても対応できる • 誰が何時どのような変更をしたのか追える
  • 23. 種類 分散バージョン管理 集中型バージョン管理 挙動 Commitしても自分のところだ けしか更新されない Commitしたら即反映 利点 ブランチの作成が 高速・ローカル シンプル Git Subversion
  • 24. ブランチによる管理 • ブランチの作成が高速 ⇔ブランチが作りやすい ⇔お気軽にブランチを作って作業 • 何かを実装する際には、 とりあえずブランチを切って 進める – 他の人には影響しないので、 好き勝手ブランチを作成・編集 – 完成したら全体のブランチに 上げればよい 主開発 ブランチ 個別機能 ブランチ 1つのストーリー (数日単位) 1つのタスク (数時間単位)
  • 25. ブランチの可視化の例
  • 26. アジェンダ • GitHubについて • Git について • Git-flow • Git のコマンド • GitHubの触り方 • やってみよう!
  • 27. git-flow A successful Git branching model • 良い感じで仕事を進めるためのルール http://keijinsonyaban.blogspot.jp/2010/10/success ful-git-branching-model.html
  • 28. メインブランチ • リリースされているものと 開発中のブランチを分ける – 何かあっても直前の最新にすぐ戻せる – 最新の本番がすぐに確認できる • 関係するブランチ名 – master: 公開されているバージョン – develop: 開発中のみんなが手を 入れているバージョン • UnrealEngineでは、「4.0」(2014/4時点)
  • 29. フィーチャーブランチ • 新機能を作るために、どのブランチ で作っているか(そして進捗はどう か?)を確認するためのブランチ • developブランチから派生 – 最終的にはdevelopブランチへマージ (合流)か破棄 • 関係するブランチ名 – Feature/***: 「***」には機能名
  • 30. リリースブランチ • 製品をリリースする直前に作るブランチ – ステージングテストをするために内容を固定する – リリースブランチからデプロイ(出荷)を行う – リリース後はdevelopとmasterにマージ • 関係するブランチ名 – release/***: 「***」には 機能名
  • 31. ホットフィックスブランチ • 本番に不具合があった 場合の緊急対応 – developからも簡単なバグを 見つけた時には作成 – developとmasterにマージ (本番と開発中の両方に 修正を取り込む) • 関係するブランチ名 – hotfix/***: 「***」には 不具合の名前 – チケット駆動開発を行っている 場合には、「bug/#チケット番号」 で連携できる場合もある
  • 32. 確認 • メインはdevelop • featureブランチ で実装 • 出荷時にrelease ブランチ • リリースしたら masterブランチ • バグを直すのは hotfix
  • 33. GitHub-flow • GitHubの開発で用いられているワークフロー – デプロイを頻繁にすることで、大きなバグを出さない 1. masterブランチはデプロイ可能 2. ブランチはmasterから派生 3. 定期的にcommitし、頻繁にpush 4. マージしたいときはプルリク 5. レビューがokならマージし、直ちにデプロイ 6.テスト (自動) 7.デプロイ CI Webサーバー 5.マージmaster feature master feature 1. pull 2. branch 3. push (定期的) 4. プルリク https://gist.github.com/Gab-km/3705015
  • 34. プルリクエスト • GitHubの特徴の1つ – コメントをつけあってのディスカッション • ソーシャルコーディング – 承認する人が ボタン1つで統合
  • 35. プルリクエストを出す 統合先ブランチ 結合ブランチ
  • 36. プルリクへのコメント
  • 37. 一行ごとにコメントもつけられる
  • 38. アジェンダ • GitHubについて • Git について • Git-flow • Git のコマンド • GitHubの触り方 • やってみよう!
  • 39. 実践 git 入門 • 代表的なコマンド (git コマンド名 <オプション>) – git init: 初期化 – git clone: すでにあるリポジトリのコピーを作る – git status: 変更が加えられたファイルを表示する – git add: コミットするファイルを指定する – git commit: 変更点を履歴に残す – git push: 他のリポジトリに送信する – git branch: ブランチの作成 – git checkout: 地ランチの切り替え – git merge: ブランチの変更の結合 – git pull (git fetch): 他のリポジトリの変更点をマージ(取得) – git revert (git reset): 作業を以前の状態に戻す(履歴を残さないで戻す) – git rebase: ブランチの派生元を変更する – git log: コミットログを閲覧する – git diff: 差分を確認する
  • 40. 多いですね… • チュートリアルも多くあるので、やっておくとよ いでしょう http://www.backlog.jp/git-guide/ http://k.swd.cc/learnGitBranching-ja/ 手を動かしながら学べる
  • 41. gitに関連するファイル ~ プロジェクト名 .gitignore gitで管理しないファイルを指定(なければ作る) .git (リポジトリの情報を格納) プロジェクトのファイル hooks: commitした時等に走らせられるスクリプト入れ .gitconfig プロジェクト共通の設定ファイル (なければ作る) などなど HEAD: 最新のコミットの位置
  • 42. 準備 • 全体設定 もしくは直接作成 もしくはツールで設定 名前の設定 メールアドレスの設定
  • 43. リポジトリの作成 • プロジェクトを作る – .git フォルダとその中に必要なファイルが作られる プロジェクト名 概要 READMEの追加 (プロジェクト名)
  • 44. 既にプロジェクトが作られている場合 • git-clone コマンドでリポジトリを取得 git clone git@github.com:imagire/UnrealEngine.git – コマンドを実行した場所に「UnrealEngine」フォルダが 作られ、その中にプロジェクトのソースコードが置かれる • もしくは、「Clone in Desktop」 GitHubなど リポジトリclone 複製が作られる
  • 45. ファイルの追加 • git-add で更新ファイルを指定 • git-commitで変更を保存 変更点は、まだローカルにだけ保存されている 適当にファイルを作成 git-add に次いで変更(追加)した ファイルを指定 git-commit でaddした時点の情報を 履歴として保存 -m でどのような中身のコミットを したのかメッセージを残す
  • 46. 確認 • git-log でコミットのメッセージを確認 – Commit した分だけ続く – 黄色い文字は、commitを 識別するためのSHA-1 (暗号化手法の種類)のハッシュ値 • -p オプションで変更点の中身も見れる
  • 47. git-commit はツールからも可能 • 自動でaddするファイルを選択
  • 48. 更新を共有 • 「git push 更新先リポジトリ ブランチ名」 GitHubなど リポジトリpush 更新先 ブランチ名
  • 49. origin • リポジトリの別名: clone元に使われる ~/Documents/GitHub/UnrealEngine/.git/config
  • 50. 更新を取得 (pushの反対) • git-fetch: 差分を確認 • git-pull: 最新の状態に更新(現在のブランチへのマージなので注意) リポジトリ ブランチ
  • 51. GitHub for Mac / Windows での更新 • Sync によりoriginのリポジトリをマージ
  • 52. ブランチ • ブランチの項目をタップして新規ブランチ入力
  • 53. コマンドラインでのブランチ • 現在のブランチ(develop)から、 feature/edit_renameというブランチを作成し て、そのブランチに移動 – 「-b」 をつけない:作成済みのブランチに移動 – 生成と移動は別々にも可能 • git branch <新規ブランチ名> • git checkout <新規ブランチ名>
  • 54. マージ • 別のブランチのcommitを統合する D&D mergeを選択 テキストを編集とか ファイルを追加とか
  • 55. コマンドラインでのマージ featureブランチの編集 developブランチの編集 マージ マージしてくるブランチ
  • 56. コンフリクト • Sync (git push) の時に、他の人が先に被る部 分を更新しているとSyncが完了できない
  • 57. コンフリクトの解消 (1/2) • コンフリクト後のファイルには両方の修正が残 されているので、望ましい状態に編集
  • 58. コンフリクト解消 (2/2) • 際commit & sync(push) すると、枝分かれし たブランチ(それぞれの更新)が1つに合流
  • 59. コマンドラインでのコンフリクト
  • 60. コマンドラインでの解消 • 修正したら、add, commit, push を実行
  • 61. 状態の確認 • git-status 最新の状態 Add前 commit 前
  • 62. 差分の確認 • git-diff 直前のcommit との差分 ブランチ名を指定して比較 ハッシュを指定して比較
  • 63. 退避
  • 64. リセット • 何かあった時に戻す – Commit していない状態でいろいろとやっていた のをcommit時点に戻す • git reset –hard HEAD “soft”にするとファイル自体は 書き換わらないでgitの情報を戻す 現在のbranchの 最終commit位置
  • 65. コミットを打ち消し • git revert: もとに戻すcommitを作成する 戻すのにrevertを使う 樹形図は戻るのではなく進む!
  • 66. よくわからなくなったとき 1. Gitでアレを元に戻す 108の方法 – http://labs.timedia.co.jp/20 11/08/git-undo-999.html – 状況に応じた対処方法がま とめられている 2. リポジトリを削除して Clone し直す!!! – 必要ならフォルダに別名を つけて退避しておきましょう
  • 67. 書籍 http://progit-ja.github.io/ Free!
  • 68. アジェンダ • GitHubについて • Git について • Git-flow • Git のコマンド • GitHubの触り方 • やってみよう!
  • 69. 僕たちはUE4を 触りたい!
  • 70. Unreal Engine 側の設定
  • 71. Pull できるようになる!
  • 72. UEは「4.0」が開発ブランチ • 「4.0」ブランチからfeatureブランチを作成
  • 73. 触り方の作法 (準備) upstream origin local EpicGames/UnrealEngine imagire/UnrealEngine 4.0 4.0 4.0 featurefeature master 1. fork 2. clone 3. branch 4. add 5. commit 6. push
  • 74. 触り方の作法 (更新) upstream origin local EpicGames/UnrealEngine imagire/UnrealEngine 4.0 4.0 4.0 featurefeature master 7. merge (中の人) 1. pull (2. push) 3. rebase 4. push 5. pull req. 6. merge(中の人)
  • 75. Forkで派生させて、自分のプロジェクトをさわっていく
  • 76. 無料アカウントでもforkしたものもprivate
  • 77. アカウント承認の中身 • ログイン時に公開鍵の鍵暗号が作成され 公開鍵がGitHubのユーザー情報に送られる 公開鍵: github_rsa.pub 秘密鍵: github_rsa 違うクライアントを使うときは、自分で鍵を登録します
  • 78. 公開鍵暗号 公開鍵 秘密鍵 0.b. 公開鍵を送る 0.a. 公開鍵と秘密鍵を作成 1. ログイン 2. 公開鍵を使って適当な キーワードを暗号化して送る 3. 秘密鍵を使って復号化 4. 送られてきたキーワードを照合 5. 承認
  • 79. UE4の起動方法が ここに書いてある!
  • 80. アジェンダ • GitHubについて • Git について • Git-flow • Git のコマンド • GitHubの触り方 • やってみよう!
  • 81. 注意 • この後の説明は、GitHubとの連携が密な、Git for Mac / Windows を基に進めさせていただ きます • SourceTreeは進行がわかりやすい際に キャプチャーを使わせていただいたりします • 慣れや、やりたいことで適切なツールをご選択 ください
  • 82. 課題1: Organization 作成 • チームを作成してみよう!
  • 83. 組織名 課金時連絡先
  • 84. 課題2: repository 作成 • プロジェクトを作成してみよう! – git init と同じ操作
  • 85. プロジェクト名 概要 READMEの追加 このREADMEはマークアップ言語によって 簡単な表記で整形できます
  • 86. 課題3: branch 作成 • developブランチを作成してみよう! – git branch develop
  • 87. 課題4: fork • 自分のプロジェクトへとforkしよう
  • 88. 課題5:clone • ローカルのプロジェクトの作成
  • 89. 課題5: feature branch • develop ブランチからfeatureブランチを作成
  • 90. develop ブランチに移行 (現在のブランチから 新しいブランチを派生させるので) ブランチ名
  • 91. 課題6:編集 • README.mdを編集
  • 92. 差分の表示 緑:追加 赤:削除 コメント 詳細 SourceTreeでみると
  • 93. 課題6:push • Featureブランチをoriginにpush
  • 94. SourceTreeでみると
  • 95. 課題7:もう一度編集 • もう一度README.mdを編集
  • 96. 課題8:プルリクエスト • きれいなプルリクを行う – featureブランチを整理 – プルリクエストを投げる
  • 97. きれいなプルリクとは • マージした後のコミットが1つ – 途中経過はマージした後は興味がある人はほとん どいないので、まとめたコミットにして統合してもらう これらを消去して統合 rebase –i master http://kik.xii.jp/archives/117
  • 98. ブランチの移動
  • 99. 大元のmasterの情報をマージ upstream/master→master (ただし、今回は何も起きない) git push origin master をこの後に入れるとなおよいでしょう
  • 100. ブランチの移動
  • 101. プルリク用のブランチを Featureブランチから作成 慣れてくれば不要(featureブランチを送ればよい)
  • 102. プルリク用のブランチを masterからの派生に変更
  • 103. 作業内容の確認 これらのコマンドを実行して統合する コメント編集のためにsquashに変更 セーブして閉じる
  • 104. コメントの修正 セーブして閉じる
  • 105. 課題9:コメント • プルリクにコメントを入れる • プルリクの特定の行にコメントを入れる
  • 106. 課題10:プルリクの更新 • コメントに対応して修正をする – タイトルの修正 – 本文の修正
  • 107. タイトルを修正してみる
  • 108. 本文修正
  • 109. 課題11:merge
  • 110. ブランチは削除 削除されたブランチがローカルに残っているように見えたら「git fetch --prune」
  • 111. 課題12:ブランチの削除 クリックでブランチ切り替え
  • 112. ブランチの削除 • コンソール – ローカルのブランチの削除 • git branch –d <ブランチ名> – マージされていないコミットがある場合に削除しない • git branch –D <ブランチ名> – マージされていないコミットがあっても強制削除 – Origin のブランチの削除 • git push origin :<ブランチ名>
  • 113. 課題13:コンフリクト • 2つのブランチを作成し、同じ場所を異なる編集 feature/edit1 feature/edit2
  • 114. D&D
  • 115. 課題14:プロジェクトの削除
  • 116. リポジトリ名
  • 117. 課題15:organizationの削除 組織名
  • 118. 課題∞: UnrealEngine • UE4のアカウント登録しているなら、 Epic/UnrealEngineをforkしてみよう • 手元にcloneしてみよう • 「4.0」ブランチから新しいブランチを派生させ てみよう • Epicに報告したい ことがあれば pull requestを 出してみよう…
  • 119. ありがとうございました • 質問はございませんか?