プログラムによる Git ブランチのマージおよび競合の解決
この例では、MATLAB® ソース管理 API を使用してブランチを作成およびマージし、競合を解決する方法を示します。
新しい Git リポジトリの作成
現在のフォルダーに新しい Git™ リポジトリを作成します。
repo=gitinit();
リポジトリへのファイルの追加
README.md ファイルを作成してリポジトリに追加します。
writelines("Questions?","README.md"); add(repo,"README.md");
ファイルの変更をコミットします。
commit(repo,Message="Add README file");ブランチの作成
タスク用に 2 つのブランチを作成します。
Task1Branch = createBranch(repo,"Task1"); Task2Branch = createBranch(repo,"Task2");
ブランチでのファイルの変更
Task1 ブランチで、行「Contact example@mailinglist.com」を追加して README ファイルを更新します。次に、変更をコミットします。
switchBranch(repo,"Task1"); writelines("Contact example@mailinglist.com","README.md",WriteMode="append"); commit(repo,Message="Modify README in Task1 branch");
Task2 ブランチで、行「Create an issue」を追加して README ファイルを更新します。次に、変更をコミットします。
switchBranch(repo,"Task2"); writelines("Create an issue","README.md",WriteMode="append"); commit(repo,Message="Modify README in Task2 branch");
ブランチのマージ
Task1 ブランチを Task2 ブランチにマージします。merge 関数は、README ファイル内の競合のためマージを完了できないと報告します。
try merge(repo,"Task1") catch % The merge function throws an expected error because this branch merge % results in a conflict. fprintf("Unable to merge Task1 into Task2.\n\nCaused by:\n" + ... "Conflicted files: README.md\n\nResolve and " + ... "commit conflicted files to complete the merge.") end
Unable to merge Task1 into Task2. Caused by: Conflicted files: README.md Resolve and commit conflicted files to complete the merge.

README ファイルを開いてその内容を調べます。
edit README.mdQuestions?
<<<<<<< HEAD
Create an issue
=======
Contact example@mailinglist.com
>>>>>>> ebc20d468cc6b8255130ccb2350b7d5db8d863f3
競合の解決
比較ツールおよびマージ ツールを使用するか、README ファイルを編集して競合を解決します。競合を対話的に解決する方法については、テキスト ファイルのマージを参照してください。
この例では、両方の変更を保持するとします。両方の変更を保持するには、単に競合マーカーを削除します。
writelines("Questions?","README.md"); writelines("Contact example@mailinglist.com","README.md",WriteMode="append"); writelines("Create an issue","README.md",WriteMode="append");
add関数を使用して、README ファイル内の競合を解決済みとしてマークします。次に、マージの解決をコミットします。
add(repo,"README.md") commit(repo,Message="Resolve Conflict");
参考
gitclone | gitrepo | commit | createBranch | switchBranch | merge
関連するトピック
関連する例
Simulink 3-way マージを使用したプロジェクト内の競合の解決 (Simulink)