MATLAB での Git の使用
MATLAB® で Git™ ソース管理を使用すると、ファイルを管理して他のユーザーと共同作業を行うことができます。Git を使用すると、ファイルの変更を追跡して、後で特定のバージョンを再表示できます。MATLAB の現在のフォルダー ブラウザーから、既存のリモート リポジトリのクローン、ローカル リポジトリへのファイルの追加、変更のコミット、リモート リポジトリとの間での変更のプッシュとプルを実行できます。
リモート Git リポジトリをクローンした後のリモート リポジトリの操作の基本的なワークフローは次のとおりです。
リモート リポジトリから最新の変更をプルします。
作業フォルダーの既存のファイルを編集します。
新しいファイルをローカル リポジトリに追加するようにマークします。
変更を確認します。
変更済みファイルをローカル リポジトリにコミットします。
変更をリモート リポジトリにプッシュします。
あるいは、ファイルに対する変更を他のユーザーと共有せずに追跡するには、リモート リポジトリと同期しないローカル Git リポジトリを作成できます。リモート リポジトリと同期しないローカル リポジトリを操作する場合も、プルとプッシュのアクションが適用されないことを除き、基本的なワークフローは同じです。
メモ
MATLAB で Git を使用する前に、システムを設定してファイルの破損を避けるために、Git ソース管理の設定で説明している手順に従ってください。
リモート Git リポジトリのクローン
HTTPS または SSH を使用して、(GitHub® や GitLab® などから) リモート Git リポジトリのクローンを作成できます。
リモート Git リポジトリをクローンするには、次を行います。
現在のフォルダー ブラウザーで、空白部分を右クリックし、[ソース管理] 、 [ファイルの管理] を選択します。MATLAB で [ソース管理を使用したファイルの管理] ダイアログ ボックスが開きます。
[ソース管理統合] オプションを
[Git]
に設定します。[リポジトリのパス] フィールドの横にある [変更] ボタンをクリックします。MATLAB で [リポジトリの選択] ダイアログ ボックスが開きます。
リモート リポジトリのパスを入力します。
[検証] ボタンをクリックしてリモート リポジトリのパスを確認します。指示に従って、リモート リポジトリのログイン情報 (GitHub のユーザー名と個人用アクセス トークンなど) を入力します。パスが有効であれば、[OK] をクリックします。リモート リポジトリが選択され、[ソース管理を使用したファイルの管理] ダイアログ ボックスに戻ります。
[サンドボックス] フィールドに、取得したファイルを格納する作業フォルダーのパスを入力します。指定したフォルダーは空でなければなりません。
[取得] ボタンをクリックします。指示に従って、リモート リポジトリのログイン情報を入力します。
リモート リポジトリをクローンした後にリモート リポジトリのパスを変更するには、作業フォルダーで右クリックして [ソース管理] 、 [リモート] を選択し、新しいパスを指定します。
HTTPS を使用してリモート リポジトリとやり取りする際にログイン プロンプトが頻繁に表示されないようにするには、資格情報を記憶するように Git 資格情報マネージャーを設定します。詳細については、Git 資格情報ヘルパーのインストールを参照してください。あるいは、代わりに SSH を使用して新しい公開鍵を追加し、リモート リポジトリのクローンを作成できます。詳細については、Git SSH 認証を使用するための MATLAB の設定を参照してください。
リモート リポジトリを新しいプロジェクトにクローンすることもできます。詳細については、新しいプロジェクトへのリモート Git リポジトリのクローンを参照してください。
追加するファイルのマーク
作業フォルダーのファイルをソース管理に追加するには、それらを追加するようにマークします。ソース管理に追加されていないファイルは、MATLAB の現在のフォルダー ブラウザーの [Git] 列で [ソース管理対象ではありません] アイコン () を使用して示されます。
ファイルを追加するようにマークするには、現在のフォルダー ブラウザーでファイルを右クリックし、[ソース管理] 、 [Git に追加] を選択します。追加するようにマークされたファイルは、MATLAB で [追加されました] アイコン () を使用して示されます。
変更の確認
作業フォルダーのファイルに変更を加えると、変更されたファイルが MATLAB の現在のフォルダー ブラウザーの [Git] 列で [変更されました] アイコン () を使用して示されます。[変更されていません] アイコン () はファイルに変更がないことを示します。
変更済みファイルをコミットする前に、次の表に示すいずれかの方法を使用してファイルに対する変更を確認します。
アクション | 手順 |
---|---|
変更したファイルをローカル リポジトリにある最新バージョンのファイルと比較する。 | 現在のフォルダー ブラウザーでファイルを右クリックし、[ソース管理] 、 [先祖と比較] を選択します。比較ツールに相違点が表示されます。 |
変更したファイルをローカル リポジトリにあるいずれかのリビジョンのファイルと比較する。 | 現在のフォルダー ブラウザーでファイルを右クリックし、[ソース管理] 、 [リビジョンと比較] を選択します。次に、変更済みファイルと比較するリビジョンを選択し、[ローカルと比較] ボタンをクリックします。比較ツールに相違点が表示されます。 |
ローカル リポジトリにある以前の 2 つのリビジョンのファイルを比較する。 | 現在のフォルダー ブラウザーでファイルを右クリックし、[ソース管理] 、 [リビジョンと比較] を選択します。次に、比較する 2 つのリビジョンを選択し、[選択対象の比較] ボタンをクリックします。比較ツールに相違点が表示されます。 |
ローカル リポジトリにあるファイルのリビジョンを参照する。 | 現在のフォルダー ブラウザーでファイルを右クリックし、[ソース管理] 、 [リビジョンの表示] を選択します。過去に誰が、いつファイルをコミットしたか、ログ メッセージ、および各変更セット内のファイルのリストを確認できます。複数のファイルを選択し、各ファイルのリビジョン履歴を確認できます。 |
変更済みファイルのコミット
作業フォルダーにある新しいファイルと変更済みファイルの現在の状態を記録および保存するには、それらをローカル リポジトリにコミットします。
ファイルをローカル リポジトリにコミットするには、次を行います。
現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [変更の表示とコミット] を選択します。[変更の表示とコミット] ダイアログ ボックスが開きます。
コミットするファイルを選択します。
[コメント] セクションにコメントを入力します。
[コミット] ボタンをクリックします。
リモート リポジトリの方が進んでいる場合、ファイルのリビジョンを更新するように求められます。リビジョンを更新するには、現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [プル] を選択します。コミットする前に競合を解決します。
ファイルのプッシュ
ローカル リポジトリのコミットされた変更がリモート リポジトリに反映されていない場合、それらの変更をリモート リポジトリにプッシュできます。リモート リポジトリに反映されていない変更がローカル リポジトリにあるかどうかを確認するには、現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [詳細の表示] を選択します。[Git 情報] フィールドに、コミットしたローカルの変更がリモート リポジトリよりも進んでいるか、遅れているか、または一致しているかが示されます。
ローカル リポジトリの方がリモート リポジトリよりも進んでいる場合に変更をプッシュするには、現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [プッシュ] を選択します。リポジトリが更新されたために変更を直接プッシュできない場合は、メッセージが表示されます。続行するには、リモート リポジトリからローカル リポジトリに最新の変更をプルします。
Git のリモート リポジトリでは空のフォルダーはサポートされません。そのため、MATLAB で空のフォルダーを作成してリモート リポジトリに変更をプッシュしている場合、そのリモート リポジトリを新しいローカル リポジトリにクローンするときに空のフォルダーは含まれません。空のフォルダーをリモート リポジトリにプッシュして他のユーザーが使用できるようにするには、このフォルダーに空の gitignore
ファイルを作成してから変更をプッシュします。
ファイルのプル
リモート リポジトリの方が進んでいてローカル リポジトリが遅れている場合、最新の変更をローカル リポジトリにプルできます。最新の変更をプルするには、現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [プル] を選択します。競合があると、プルが失敗する場合があります。複雑な変更の場合は、オリジナル (ローカル リポジトリ) からブランチを作成し、いくつか変更を加えてから、そのブランチをメインのトラッキング ブランチにマージすることを検討してください。
プル アクションは、最新の変更をフェッチし、現在のブランチにそれらをマージします。リポジトリから入ってくる内容が不明な場合は、まずファイルをフェッチして変更を確認してから、変更を手動でマージします。
ファイルのフェッチ
リモート リポジトリから最新の変更をフェッチするには、現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [フェッチ] を選択します。フェッチにより、元のブランチがすべて更新されてローカル リポジトリに反映されます。作業フォルダーのファイルは変更されません。リモート リポジトリからの変更を確認するには、元の変更をローカル ブランチにマージする必要があります。
マージする必要があるフェッチされた変更がローカル リポジトリにあるかどうかを確認するには、現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [詳細の表示] を選択します。[Git 情報] フィールドに、コミットしたローカルの変更がリモート リポジトリよりも進んでいるか、遅れているか、または一致しているかが示されます。コミットしたローカルの変更が遅れている場合、リモート リポジトリから最新の変更をフェッチしてマージする必要があります。
たとえば、メイン ブランチで操作している場合に、リモート リポジトリのメイン ブランチからすべての変更を取得するとします。
現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [フェッチ] を選択します。
現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [ブランチ] を選択します。
[ブランチ] ダイアログ ボックスの [ブランチ] リストで [origin/main] を選択します。
[マージ] をクリックします。元のブランチの変更が作業フォルダーのメイン ブランチにマージされます。
マージが成功したかどうかを確認するには、現在のフォルダー ブラウザーで右クリックし、[ソース管理] 、 [詳細の表示] を選択します。[Git 情報] フィールドに Coincident with /origin/main
と示されていれば、変更が正常にマージされており、リモート リポジトリからフェッチして作業フォルダーにマージした変更を確認できます。
競合の解決
自分と別のユーザーが別々の作業フォルダーまたは別々のブランチに含まれている同じファイルに変更を加えた場合、変更済みファイルをコミットしようとすると、競合に関するメッセージが表示されます。競合を解決するには、競合の原因となっている相違点を比較し、競合する変更をマージまたは上書きします。競合を解決したら、解決済みとしてマークし、ファイルをコミットできます。
競合は、MATLAB の現在のフォルダー ブラウザーの [Git] 列において赤い警告アイコン () で示されます。ファイルの競合を解決するには、次を行います。
競合のあるファイルを右クリックし、[ソース管理] 、 [競合を表示] を選択します。比較ツールが開き、競合する 2 つのリビジョンのファイルの相違点が表示されます。
比較ツールを使用して、競合の解決方法を決定します。2 つのリビジョン間の変更をマージするには、ファイルやフォルダーの比較とファイルのマージを参照してください。
競合を解決したら、現在のフォルダー ブラウザーでファイルを右クリックし、[ソース管理] 、 [競合が解決済みであるとしてマークする] を選択します。
変更済みファイルをコミットします。
競合マーカーの抽出
バイナリとして登録されていないファイル (テキスト ファイルなど) で作業している場合、それらのファイルに Git によって競合マーカーが挿入されることがあります。競合マーカーは次の形式で表されます。
<<<<<<<["mine" file descriptor] ["mine" file content] ======= ["theirs" file content] <<<<<<<["theirs" file descriptor]
競合のあるファイルを開くか [競合を表示] を選択すると、MATLAB でファイルの競合マーカーが確認されます。ファイルに競合マーカーが含まれている場合、[競合マーカーが見つかりました] ダイアログ ボックスが開きます。指示に従って、競合マーカーを抽出してファイルを修正します。
競合マーカーを表示するには、[競合マーカーが見つかりました] ダイアログ ボックスで、[ファイルの読み込み] をクリックします。MATLAB では競合マーカーは認識されないため、ファイルは開かないでください。代わりに、[ファイルの修正] をクリックして、競合マーカーを抽出します。
競合がないファイルに競合マーカーが残っていることがあります。この状況は、競合があるファイルを解決済みとしてマークし、ローカル リポジトリにコミットした場合に発生する可能性があります。競合があるとマークされていないファイルに競合マーカーが確認された場合、手動で競合マーカーを抽出できます。
現在のフォルダー ブラウザーで、ファイルを右クリックし、[ソース管理] 、 [競合マーカーをファイルに抽出] を選択します。
[競合マーカーをファイルに抽出] ダイアログ ボックスで、競合のあるファイルに "自分" のファイル バージョンをコピーする既定のオプションと [抽出されたファイルを比較します] オプションが選択されていることを確認します。
[抽出] をクリックします。
比較ツールを使用して競合を解決します。
ファイルの管理
ローカル Git リポジトリのファイルを管理するために、現在のフォルダー ブラウザーからさまざまなアクションを実行できます。ファイルのソース管理ステータスを更新したり、移動、名前の変更、削除、元に戻すなどのファイルの操作を実行できます。
次の表に、ファイルを管理するために実行できるアクションを示します。
アクション | 手順 |
---|---|
1 つ以上のファイルのソース管理ステータスを更新する | 現在のフォルダー ブラウザーで、1 つ以上のファイルを選択し、右クリックして [ソース管理] 、 [Git 状態を更新] を選択します。 |
ローカル リポジトリにあるすべてのファイルのソース管理ステータスを更新する | 現在のフォルダー ブラウザーで、空白部分を右クリックし、[ソース管理] 、 [Git 状態を更新] を選択します。 |
ファイルを移動する | 現在のフォルダー ブラウザーで、ファイルを右クリックして [ソース管理] 、 [移動] を選択し、新しいファイルの場所を入力します。 |
ファイルの名前を変更する | 現在のフォルダー ブラウザーで、ファイルを右クリックして [ソース管理] 、 [名前の変更] を選択し、新しいファイル名を入力します。 |
ファイルをローカル リポジトリから削除し、作業フォルダーにコピーを残しておく | 現在のフォルダー ブラウザーで、ファイルを右クリックし、[ソース管理] 、 [Git から削除] を選択します。ファイルがソース管理からの削除対象としてマークされると、その記号が [削除されました] () に変わります。ファイルは、次のコミット時に、リポジトリから削除されます。 |
ファイルをローカル リポジトリと作業フォルダーから削除する | 現在のフォルダー ブラウザーで、ファイルを右クリックし、[ソース管理] 、 [Git とディスクから削除] を選択します。ファイルは現在のフォルダー ブラウザーから消え、即座に作業フォルダーから削除されます。ファイルは、次のコミット時に、リポジトリから削除されます。 |
ローカル リポジトリにあるファイルの変更を元に戻す | 現在のフォルダー ブラウザーで、ファイルを右クリックし、[ソース管理] 、 [ローカルな変更を元に戻す] を選択します。 |
ローカル リポジトリにあるすべてのファイルのローカルな変更を元に戻す | 現在のフォルダー ブラウザーで、空白部分を右クリックし、[ソース管理] 、 [ブランチ] を選択します。[ブランチ] ダイアログ ボックスで [HEAD に戻す] をクリックします。 |
ファイルを指定したリビジョンに戻す | 現在のフォルダー ブラウザーで、ファイルを右クリックし、[Git を使用して元に戻す] を選択します。次に、リビジョンを選択し、[元に戻す] ボタンをクリックします。ファイルを以前のリビジョンに戻した後に、変更を加えた場合、リポジトリ履歴との競合が解決するまで、ファイルをコミットできません。 |
ローカル Git リポジトリの作成
ファイルに対するバージョン管理を他のユーザーと共有せずに追加する場合は、リモート リポジトリにリンクせずにシステムでローカル Git リポジトリと作業フォルダーを作成できます。
ローカル Git リポジトリと作業フォルダーを作成するには、次を行います。
現在のフォルダー ブラウザーで、空白部分を右クリックし、[ソース管理] 、 [ファイルの管理] を選択します。MATLAB で [ソース管理を使用したファイルの管理] ダイアログ ボックスが開きます。
[ソース管理統合] オプションを
[Git]
に設定します。[リポジトリのパス] フィールドの横にある [変更] ボタンをクリックします。MATLAB で [リポジトリの選択] ダイアログ ボックスが開きます。
[ディスク上に Git リポジトリを作成] ボタンをクリックします。
ローカル リポジトリを作成して格納するフォルダーを選択し、[フォルダーの選択] をクリックします。選択したフォルダーは空でなければなりません。
[検証] ボタンをクリックしてリポジトリのパスを検証します。パスが有効であれば、[OK] ボタンをクリックします。[ソース管理を使用したファイルの管理] ダイアログ ボックスに戻ります。
[サンドボックス] フィールドに、ファイルを格納する作業フォルダーのパスを入力します。指定したフォルダーは空でなければなりません。
[取得] ボタンをクリックします。
ローカル リポジトリと作業フォルダーを作成した後にローカル リポジトリのパスを変更するには、作業フォルダーで右クリックして [ソース管理] 、 [リモート] を選択し、新しいパスを指定します。
ローカル システムのリポジトリで Git サーバーを使用するには、Git サーバー ホスティング ソリューションを使用するか、独自の Apache® Git サーバーを設定できます。
メモ
実稼働環境では、file:/// protocol
を使用してファイル システム経由でリモート リポジトリに依存することは避けてください。このファイル プロトコルは安全ではありません。同時アクセスによって、リポジトリが破損する可能性があります。
コミットされていない変更の Git 一時退避を使用した保存
変更済みファイルを後で使用するためにコミットせずに保存するには、Git 一時退避を作成します。一時退避を使用すると、ファイルに対する変更を新しいブランチに簡単に移動することもできます。
一時退避を作成するには、現在のフォルダー ブラウザーで、作業フォルダー内の空白部分を右クリックして [ソース管理] 、 [一時退避] を選択します。次に、[新規一時退避] ボタンをクリックします。
一時退避に含まれる変更済みファイルを表示するには、現在のフォルダー ブラウザーで、空白部分を右クリックして [ソース管理] 、 [一時退避] を選択します。[使用可能な一時退避] セクションで一時退避を選択し、変更済みファイルを右クリックして変更を表示したりコピーを保存したりできます。
一時退避を現在のブランチに適用してから一時退避を削除するには、[ポップ] をクリックします。一時退避を適用して維持するには、[適用] をクリックします。
一時退避を削除するには、[削除] をクリックします。
参考
関数
gitrepo
|gitclone
|add
|rm
|commit
|createBranch
|switchBranch
|fetch
|merge
|push