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

@s_ssk13さん向けGitHub入門

on

  • 7,100 views

 

Statistics

Views

Total Views
7,100
Views on SlideShare
4,034
Embed Views
3,066

Actions

Likes
25
Downloads
53
Comments
1

9 Embeds 3,066

http://www.wakayama-u.ac.jp 2913
https://twitter.com 76
http://pec-local.swe.nec.co.jp 37
http://connpass.com 18
http://s.deeeki.com 13
https://www.chatwork.com 3
http://soutatsu2.ciu.canon.co.jp 3
http://www.slideee.com 2
http://slideshare-download.seesaa.net 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

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

    @s_ssk13さん向けGitHub入門 @s_ssk13さん向けGitHub入門 Presentation Transcript

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