@bibmeke
iOSビギナー開発者のための Git入門
みなさんは Xcodeプロジェクトの
バックアップ取ってますか?
お手軽バックアップ
バックアップしたプロジェクト
ありがちな状況• 機能追加したら実行出来なくなった…バックアップとってなくて元に戻せない…orz
• こんなこともあろうかとバックアップを用意して… ってどこ変えたんだっけ?
• そもそもどれが最新版だっけ…?
• 一つのアプリをみんなで作ってるけど、誰がどこ編集したかわからない
問題点
• どのタイミングでどこを変えたのかわかりにくい
• 目視で毎回差分を見極めるのは時間の無駄
• 人が増えるとさらにややこしい
バージョン管理とは• ファイルの変更履歴を美しく残すための仕組み
• いつ (変更日時)
• 誰が (変更した人)
• 何を (ファイルの変更点)変更したかといった情報を記録
Git (ギット)
• 分散型バージョン管理システムの一つ
• Linuxのソースコードを管理するために作られた
• 大きなプロジェクトでも高速動作
• 無料かつオープンソース
ソースコードに限らず• テキストデータならなんでも得意!
• ソースコード (iOS以外ももちろん)
• Web (HTML / CSS / JavaScript)
• 本の原稿
• などなどなど
Git = GitHub?
• インドとインドネシアくらい違う
• GitHubはGitを利用したソーシャルネットワークサービス
• Git + SNS = GitHub!
Gitとの付き合い方• Gitはターミナルで操作する
• 白地に黒文字の画面に呪文を唱えていく
• …他にも手段があります
Git on Xcode
• Gitの操作は実はXcodeから可能
• ただし可能な操作は限定的
• あなたのプロジェクトでも既に有効になっているかも?
いつの間にか使っていた例• A: added追加されたファイル
• M: modified変更されたファイル
• 実は既にGitに見守られています
まずは用語から• リポジトリ (Repository)
• コミット (Commit)
• ブランチ (Branch)
• Switch to Branch
• マージ (Merge)
リポジトリ• Repository … 容器, 貯蔵[保管, 収納]所
• 変更履歴が保存されていくデータベース
• Gitの場合は.gitフォルダ(隠しフォルダ)の中にある
普段は見えません
コミット• 【名詞】前回の状態からいつ、誰が、何を変更したかという情報
• 【動詞】コミットをリポジトリに書き記すこと
リポジトリの中身
4/194/184/174/16
ブランチ• branch … 枝
• 変更履歴を枝分かれさせたいときに使う
• 例えば… 安定バージョンと機能追加バージョン
master
develop
Switch to Branch
• 作業中ブランチの切り替え
• 普段は最初から存在するmasterブランチに変更履歴が記録されていく
• これを切り替えたいときに
マージ• それぞれのブランチでの変更点が一つのブランチに統合される
• 機能追加がうまくいった場合に安定版に合流させる、とか
master
develop
Xcodeでやってみよう• リポジトリの作成
• ソースファイルの編集
• コミット(変更を保存)
• ブランチを作る(枝分かれ)
• Switch to Branch(ブランチの間を行き来)
• マージ (二つのブランチを統合)
リモートリポジトリ
• リモート(外部)にあるリポジトリ
ネット
Macの中 外部のサーバの中
何に使える?• みんなでリモートリポジトリを編集共同でアプリ開発に
Aさん
リモートリポジトリ
Bさんネット
何に使える?• ひとりでリモートリポジトリに変更を送信外部のバックアップ先として
Macリモートリポジトリ
ネット
Gitホスティング• GitHub一番人気!無料でリポジトリ作り放題
• Bitbucket 二番人気無料でプライベートリポジトリまで作り放題
• codebreak;和製GitHubと呼ばれる期待の新星(日本語対応) 無料でプライベートリポジトリまで作り放題
プッシュ• ローカルのリポジトリに記録されている 変更履歴をリモートリポジトリにアップロード
Macリモートリポジトリ
ネット
プル• リモートのリポジトリに記録されている変更履歴をローカルリポジトリにダウンロード
• 他の人が変更した内容を手元に持ってくる
Macリモートリポジトリ
ネット
codebreak;でやってみます
• 今回はリモートリポジトリを作って外部にバックアップを作ってみます
• リモートリポジトリの作成
• ローカルリポジトリの変更をリモートリポジトリへプッシュ
もの足りないあなたに• SourceTree (http://www.sourcetreeapp.com)
• Gitのより細かい操作が可能
続きはWebで• ProGithttp://git-scm.com/book/ja
• こわくないGithttp://www.slideshare.net/kotas/git-15276118
• githughttps://github.com/Gazler/githug