MATLABでGitを操作しよう (第4回 : ブランチ作成)

引き続きMATLAB GUIによるGit操作の第4回目

作成環境 MATLAB R2019b

[第1回 : プロジェクト作成とGUIの説明](https://qiita.com/stozaki/items/e4fa14c36f6c134e53e7)
[第2回 : git add/git commit](https://qiita.com/stozaki/items/4bacb2e988c74f7a16e4)
[第3回 : チェックアウト "特定のコミットに戻る"](https://qiita.com/stozaki/items/e618748b867b6a609333)
**第4回 : ブランチ作成**
第5回 : リモートリポジトリとの連携 (git push/git pull)
第6回 : クローンを作成する
第7回 : 応用1
第8回 : 応用2


# ブランチ作成
前回までのプロジェクトには、foo.mとgoofy.mというファイルがGitの管理下であり、プロジェクトの管理対象でした。そこで、次は新しい機能としてsloth.mを別ブランチの中で作っていきます。
図で示すと以下の様になります。

![git4_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/24252a7a-e056-33d0-b7e2-7f5b2c412d31.png)

####ブランチの作成手順
1. ブランチボタンをクリック
2. ブランチ ダイアログの「ブランチとタグの作成」をクリック
3. 新規 「ブランチ」を選択
4. 名前欄に任意のブランチ名を設定 (今回はfeature_1)
5. 「作成」ボタンをクリック
![git4_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/5841329e-0868-f507-f076-ebc1641e2660.png)

####新規ブランチで開発
プロジェクトウィンドウで「現在のブランチ」がfeature_1となっていることを確認します。
sloth.mを「プロジェクトに追加」します。第1回でも説明したように、この操作は```git add```に相当します。
![git4_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/66909e61-b692-cc75-3f32-30bf5142f6cb.png)

#### ファイル編集
fearture_1ブランチにて
sloth.mを1回編集し、コミットします
![git4_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/e3f51d13-17d5-3de5-917c-e16d10068ec7.png)

#### masterブランチにチェックアウト
ブランチボタンをクリックし、masterブランチにチェックアウト(切り替え)します。
sloth.mはmasterブランチから切り離されたブランチで開発されているので、フォルダから見えなくなります。
![git4_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/328f6b36-abb3-f56b-45ea-7298838de9b0.png)

#### ブランチ状態の確認
ブランチボタンをクリックし、ブランチとして「すべて」を選択します。すると、feature_1ブランチが分岐し、sloth.mがコミットされていることがわかります。
![git4_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/fb1e6ee3-bdae-bfd5-b73b-60c36c16f709.png)

#### ブランチのMerge
sloth.mの開発が完了したと仮定し、master <= feature_1にMergeします。
1. ブランチでmasterを選択し、「切り替え」をクリック
2. 現在のブランチの名前がmasterになっていることを確認
3. 「マージ」ボタンをクリック
![git4_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/67ec4508-c794-a590-2619-c3a4efccf6b1.png)

#### ブランチのMerge 完了
「マージ」ボタンをクリックすると、分岐していたfeature_1がmasterに接続されたことがわかります。
![git4_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324583/77515fd3-b247-05f7-3a25-827938079607.png)

#### プロジェクトAPI紹介
ここまでで今回の記事は終了ですが、関連APIとしてを1つ紹介します。
新規追加したsloth.mのファイルステータスを取得してみたいと思います。
プロジェクト管理下では、「プロジェクトオブジェクト」というオブジェクトで管理下のファイルステータスや、バージョン管理ツールとの連携状況を見ることが出来ます。
オブジェクトの返り値をmyPrjとすると

```matlab
myPrj = currentProject
myPrj = 

  Project のプロパティ:

                        Name: "gitPrj1"
    SourceControlIntegration: "Git"
          RepositoryLocation: "リモート origin が指定されていません;"
       SourceControlMessages: [1×3 string]
                    ReadOnly: 0
                    TopLevel: 1
                Dependencies: [1×1 digraph]
                  Categories: [1×1 matlab.project.Category]
                       Files: [1×3 matlab.project.ProjectFile]
                   Shortcuts: [1×0 matlab.project.Shortcut]
                 ProjectPath: [1×1 matlab.project.PathFolder]
           ProjectReferences: [1×0 matlab.project.ProjectReference]
                StartupFiles: [1×0 string]
               ShutdownFiles: [1×0 string]
                 Description: ""
                  RootFolder: "T:\Qiita\gitPrj1"
         SimulinkCacheFolder: ""
       SimulinkCodeGenFolder: ""
        ProjectStartupFolder: "T:\Qiita\gitPrj1"
```

```matlab
myPrj.Files(3)

ans = 

  ProjectFile のプロパティ:

                   Path: "T:\Qiita\gitPrj1\sloth.m"
                 Labels: [1×1 matlab.project.Label]
               Revision: ""
    SourceControlStatus: Unmodified
```

と言った具合に、sloth.mは変更されていない事がプロジェクトオブジェクトのプロパティ値から判定ができます。

APIドキュメント
[currentProject](https://jp.mathworks.com/help/matlab/ref/currentproject.html)