[Xcode 5] 新しくなった Source Control で Git の操作をしてみる

はじめに

Xcode 5 で Source Control が File メニューから独立して Source Control メニューの配下に移動になりました。整理整頓され、機能も増えたようです。主に目的別にXcode 5 で Git はどう操作するのかを検証します。(SVNも使えるようですが、ここではGitを使ってみます)

目的別

リモートリポジトリを追加したい

想定:自分で最初にローカルリポジトリを作成する → リモートを設定して他の開発者と共有する。

1. メニューから Source Control > {Repository Name} - {Branch Name} > Configure {Repository Name} を選択します。

2. Add Remote... を選択します。
sc_add_remote

3. Remote を設定します。

sc_add_remote2

リモートリポジトリのファイルを取得したい

想定:誰かが作ったリモートリポジトリの内容を取得して作業を始める。

1. メニューから Check Out... を選択し、リモートリポジトリを選択します。一覧にない場合は メニューの Xcode > Preference > Accounts からリモートリポジトリの情報を設定します。
sc_check_out

2. Check Out 先の場所を聞かれるので設定します。

ブランチを作りたい

方法1

1. メニューから Source Control > {Repository Name} - {Branch Name} > New Branch を選択します。

2. ブランチ名を設定します。

方法2

1. メニューから Source Control > {Repository Name} - {Branch Name} > Configure {Repository Name} を選択します。

 2. Branches タブから 「+」ボタンでブランチの追加をします。

他のブランチに移動したい

1. メニューから Source Control > {Repository Name} - {Branch Name} > Switch to Branch を選択します。

2. ブランチを選択します。(この時に移動前のブランチでファイルを編集している場合はコミットするか変更の取消しが必要です)

ブランチを削除したい

1. メニューから Source Control > {Repository Name} - {Branch Name} > Configure {Repository Name} を選択します。

 2. Branches タブから 「-」ボタンでブランチを削除します。

他のブランチの内容をマージしたい

1. メニューから Source Control > {Repository Name} - {Branch Name} > Merge from Branch を選択し、取り込みたいブランチを選択します。
sc_merge_from

2. マージする内容を確定します。
sc_merge

他のブランチにこのブランチの内容をマージしたい

1. メニューから Source Control > {Repository Name} - {Branch Name} > Merge to Branch を選択し、マージさせるブランチを選択します。

2. マージさせる内容を確定させます。

ローカルリポジトリに変更内容を確定したい(Commit)

1. メニューから Source Control > Commit... を選択します。[Push to remote] のチェックを入れるとCommit したものを Pushしてリモートリポジトリにも同時に反映させます。
sc_commit

リモートリポジトリにローカルリポジトリの内容を反映したい(Push)

1. メニューから Source Control > Push... を選択します。

リモートリポジトリの内容を取得したい(Pull)

1. メニューから Source Control > Pull... を選択します。

変更したファイルを変更前の状態に戻したい

全てのファイルの変更を戻す場合

1. メニューから Source Control > Discard All Changes... を選択します。

一部ファイルの変更を戻す場合

1. 変更したいファイルを選択します。

2. メニューから Source Control > Discard Changes in "{File Name}" を選択します。

履歴を見たい

1. メニューから Source Control > History を選択します。
「Show N modified file」 をクリックすると変更内容がDiffで見られます。
sc_history

sc_history_diff

 

ショートカット一覧

機能 ショートカット
Commit ⌘⌥C
Pull ⌘⌥X

一覧と書きましたが、デフォルトで割り当てられているのは2つだけでした。PushはCommitから出来たりするので充分なのかもしれません。

Source Control メニューから

sc

  • Working Copies
    (未検証 どうしたらActiveになるのでしょうか‥)
  • {Repository Name} - {Branch Name}
    リポジトリ名 – 現在居るブランチ名を表示します。
    • New Branch
      ブランチを作成してその作成したブランチに移動します。[git checkout -b]
    • Switch to Branch
      ブランチを切り替えます。[git checkout]
    • Merge from Branch
      別ブランチの変更をカレントのブランチに取り込みます。[git merge]
    • Merge into Branch
      上と逆パターンで対象ブランチにカレントブランチをマージさせます。さらに対象のブランチに移動します。
    • Configure {Project Name}
      リモートリポジトリの追加/編集、ブランチの追加の追加/編集ができます。プロジェクトを作ったら、まずここでリモートを追加するかと思います。
      Xcode4 では Organizer が担当していました。
      [git remote] [git branch]
  • Check Out
    他のリポジトリのファイルを取得し、Xcodeの別ウインドウで開きます。[git clone]
  • Commit
    ローカルリポジトリにCommitします。[Git commit)
  • Push
    リモート登録されたリポジトリに変更を更新します。[Git push]
  • Pull
    リモートリポジトリからファイルを取得し、必要であればマージします。[git pull]
  • Refresh Status
    リポジトリの状態を更新します。[git status]
  • Discard All Changes
    全ての変更を前回のコミットの状態に戻します。[git checkout -- {File Name}]
  • Add Selected Files
    選択されたファイルをステージします。(未検証)
  • Discard Changes in Selected Files
    選択されたファイルをコミット前の状態に戻します。
  • Mark Selected Files as Resolved
    コンクリフトしたファイルを解決済みとしてマークします。(未検証)
  • History
    コミット履歴を表示します。

まとめ

メニュー体系が整理され、ブランチの操作と履歴の表示が増えました。これでだいぶコマンドラインの出番が減り通常の開発時の作業がXcodeで完結しそうです。