Integrating with Git
多くの SCM システムとの統合には、1 つのファイルから変更された、元を同じくする 2 つの修正版を比較できるようにするため、Merge の Professional Edition が必要となります。
Git for Windows (msysGit)
Merge は Git for Windows と強固に統合されます。Araxis では、Merge が Git リポジトリのファイルに直接アクセスできるように Git ファイルシステム プラグイン を提供しています。また、ファイル比較(フォルダー比較ではない)では、Merge は バージョン ボタン ドロップダウン バージョン メニューに、比較されている各ファイルの別のリビジョンを持たせることができます。詳細については、テキスト ファイル(または、入力/貼り付けしたテキスト)の比較を参照してください。
Git for Windows のファイル比較およびマージ操作で Merge が使用されるように設定できます。
以下の設定手順は Git for Windows v2.24.0 でテストを行いました。
ファイル比較およびファイル マージに Araxis Merge を使用するには:
-
適切な Git 構成ファイル に以下の diff および merge ツール設定を追加して、更新してください。
[diff] tool = araxis [difftool "araxis"] path = C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe [merge] tool = araxis [mergetool "araxis"] path = C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe [alias] ad = difftool --tool=araxis --dir-diff ads = difftool --tool=araxis --dir-diff --staged
上記のパスの
C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe
部分を、お使いのマシンにインストールされている Mergecompare.exe
コマンドライン ユーティリティへの完全パスに置き換えます。パス要素は 2 つの円記号を使って区切ることに注意してください。 ファイルを比較するには、
git difftool
コマンドを使用します。--dir-diff
オプションを指定すると、変更されたすべてのファイルを表示するフォルダー比較が行われます。上のコードで定義されている git
ad
(Araxis diff の省略)およびads
(Araxis diff stage)エイリアスは、git difftool
コマンドを介して Merge を起動するための便利なショートカットを提供します。このエイリアスの使用法については、gitad
およびads
エイリアスの使用例を参照してください。ファイルのマージ後、ブランチまたはリモート リポジトリの不一致変更を解決するには、
git mergetool
コマンドを使用します。git mergetool
によって Merge が開いた場合、自動ファイル マージ トピックで説明されているように、比較されたファイルは自動的にマージされます。重複する変更箇所、またはそれぞれの最初か最後が一致する変更箇所には、不一致マーカーが付けられます。このように自動マージができない各行の先頭に、赤い不一致アイコンが表示されます。
自動マージされる前のファイルを見たい場合は、元に戻す
をクリックするか Ctrl+Z キーを押下します。
git ad
および ads
エイリアスの使用例:
git difftool
コマンドは git diff
へのフロントエンドであるため、git diff
オプションと引数を受け付けます。上の構成で定義されている git ad
および ads
エイリアスは単に git difftool
を起動するためのショートカットです。これは、一般に git diff
引数を git ad
や git ads
に渡すことができることを意味します。下記の例ではいくつかの考えられるケースを示しますが、完全に網羅されているわけではありません。
git ad
の最適な起動方法を検討する場合は、Git リビジョンおよび範囲の指定に関する説明も役立つ可能性があります。
Git で起動したフォルダー比較を表示する場合は、Merge ウィンドウを分割して上部にフォルダー比較ビュー、下部にファイル比較ビューを表示する (ファイル比較付き 2 者間比較 ) が特に有用です。
-
2 者間フォルダー比較を起動して、現在の作業ツリー内で “ステージングされていない” 変更をすべて示します。
git ad
-
2 者間フォルダー比較を起動して、現在のインデックス(ステージング領域)内で “ステージングされている” 変更をすべて示します。
git ads
-
変更されたファイル
myfile.c
への変更を示す 2 者間フォルダー比較を起動します。git ad myfile.c
-
myfile.c
のコミット 11a783 および c2061b の 2 者間フォルダー比較を起動します。git ad 11a783..c2061b myfile.c
-
2 者間フォルダー比較を起動し、ハッシュ
c2061b
を使ったコミットによって適用される変更をすべて示します。git ad c2061b^!
(WSL 下などで)
zsh
をシェルとして使用し、EXTENDEDGLOB
オプションが設定される場合は、^
をエスケープする必要があります。git ad c2061b\^!
-
2 者間フォルダー比較を起動し、
master
およびbugfix
ブランチ間の変更をすべて示します。git ad master..bugfix
Git WSL(Windows Subsystem for Linux)
バージョン 2017.4929 以降の Merge では、Windows Subsystem for Linux(WSL)下で実行する Git と統合できます。
Merge 2020 以降を使用することを強くお勧めします。このバージョンの Merge では WSL 統合が大幅に改善され、Windows 10 May 2019 Update (1903) 以降では \\wsl$
スタイルのパス を使用します。Merge 2020 では、WSL 1 と WSL 2 の両方がサポートされます。
Merge 2020 以降(Windows 10 May 2019 Update (1903) 以降で使用)
Merge 2020 以降 および Windows 10 1903 以降の組み合わせで使用する場合、Merge-WSL 統合は \\wsl$
スタイルのパスを使用します。これにより、Merge は WSL ファイルへアクセスできるようになり、以前のバージョンの Merge または Windows のときよりもさらに統合しやすくなります。
ファイル比較およびファイル マージに Araxis Merge を使用するには:
-
適切な Git 構成ファイル に以下の diff および merge ツール設定を追加して、更新してください。
[diff] tool = araxis [difftool "araxis"] cmd = '/mnt/c/Program Files/Araxis/Araxis Merge/arx_wsl_git_compare' $BASE $LOCAL $REMOTE [merge] tool = araxis [mergetool "araxis"] cmd = '/mnt/c/Program Files/Araxis/Araxis Merge/arx_wsl_git_merge' $BASE $LOCAL $REMOTE $MERGED [alias] ad = difftool --tool=araxis --dir-diff --no-symlinks ads = difftool --tool=araxis --dir-diff --no-symlinks --staged
上記のパスの
/mnt/c/Program Files/Araxis/Araxis Merge
部分を、お使いのマシンで Merge をインストールしたフォルダーの完全なパスに置き換えます。 ファイルを比較するには、
git difftool
コマンドを使用します。--dir-diff
オプションを指定すると、変更されたすべてのファイルを表示するフォルダー比較が行われます。上のコードで定義されている git
ad
(Araxis diff の省略)およびads
(Araxis diff stage)エイリアスは、git difftool
コマンドを介して Merge を起動するための便利なショートカットを提供します。このエイリアスの使用法については、gitad
およびads
エイリアスの使用例を参照してください。ファイルのマージ後、ブランチまたはリモート リポジトリの不一致変更を解決するには、
git mergetool
コマンドを使用します。git mergetool
によって Merge が開いた場合、自動ファイル マージ トピックで説明されているように、比較されたファイルは自動的にマージされます。重複する変更箇所、またはそれぞれの最初か最後が一致する変更箇所には、不一致マーカーが付けられます。このように自動マージができない各行の先頭に、赤い不一致アイコンが表示されます。
自動マージされる前のファイルを見たい場合は、元に戻す
をクリックするか Ctrl+Z キーを押下します。
Merge 2017–2019 または Windows 10 October 2018 (1809) より前
上記のような旧バージョンの Merge または Windows を使用する場合、Merge-WSL 統合では Merge がアクセスするリポジトリおよびファイルは Windows ファイル システム(たとえば、WSL の観点からすると /mnt/c
)に格納されている必要があります。次の警告をよくお読みになり、この制限がある理由をご理解ください。
非常に重要:いかなる場合でも、Araxis Merge などの Windows アプリケーションを使用して Linux ファイルを直接作成したり変更したりしないでください。WSL の設計により、この規則を破ると、データが失われたり、Linux 環境に損傷を与えたりする可能性があります。そのため、旧バージョンの Merge(2020 より前)または Windows(Windows 10 1903 より前)では、WSL で実行される Git および Mercurial と Merge を統合するには、Windows と WSL の両方から使用するリポジトリおよびファイルを、Windows ファイル システム(たとえば、WSL の観点からすると /mnt/c
)に格納する必要があります。詳細については、Do not change Linux files using Windows apps and tools を参照してください。
このセクションの統合の説明は、上記の制限を遵守するように努めていますが、場合によっては考慮されていない可能性があります。そのため、Merge を使用してファイルやフォルダーを保存またはコピーする場合には、そのファイルやフォルダーが %localappdata%\lxss\
下の WSL ファイル領域に書き込まれていないか確認することをお勧めします。
ファイル比較およびファイル マージに Araxis Merge を使用するには:
-
Git は、
git difftool
が呼び出されるときに比較用の一時ファイルを作成するため、TMPDIR
環境変数が Windows ファイル システム上の一時ディレクトリ(たとえば、WSL の観点からすると/mnt/c
)に設定されているようにする必要があります。これを行う 1 つの方法は、Git の実行時に適切にTMPDIR
を設定する、git
コマンドのエイリアスを作成することです。これを行うには、以下のコードを.bashrc
に追加します。. "/mnt/c/Program Files/Araxis/Araxis Merge/arx_wsl_utilities" alias git="env TMPDIR='$(windows_tmp_dir_as_unix_path)' git"
注意:上記の
/mnt/c/Program Files/Araxis/Araxis Merge
部分を、お使いのマシンで Merge をインストールしたフォルダーの完全なパスに置き換えます。このエイリアスを使用して
TMPDIR
を設定する方法を取る場合は、常に、そのエイリアスを使用して Git から Merge を呼び出すようにしてください。WSL の Git から他の方法によって(たとえば、他のアプリケーションやスクリプトから)Merge を呼び出す場合は、呼び出す前に必ず、TMPDIR
を適切に設定する必要があります。 -
適切な Git 構成ファイル に以下の diff および merge ツール設定を追加して、更新してください。
[diff] tool = araxis [difftool "araxis"] cmd = '/mnt/c/Program Files/Araxis/Araxis Merge/arx_wsl_git_compare' $BASE $LOCAL $REMOTE [merge] tool = araxis [mergetool "araxis"] cmd = '/mnt/c/Program Files/Araxis/Araxis Merge/arx_wsl_git_merge' $BASE $LOCAL $REMOTE $MERGED [alias] ad = difftool --tool=araxis --dir-diff --no-symlinks ads = difftool --tool=araxis --dir-diff --no-symlinks --staged
上記のパスの
/mnt/c/Program Files/Araxis/Araxis Merge
部分を、お使いのマシンで Merge をインストールしたフォルダーの完全なパスに置き換えます。 ファイルを比較するには、
git difftool
コマンドを使用します。--dir-diff
オプションを指定すると、変更されたすべてのファイルを表示するフォルダー比較が行われます。上のコードで定義されている git
ad
(Araxis diff の省略)およびads
(Araxis diff stage)エイリアスは、git difftool
コマンドを介して Merge を起動するための便利なショートカットを提供します。このエイリアスの使用法については、gitad
およびads
エイリアスの使用例を参照してください。ファイルのマージ後、ブランチまたはリモート リポジトリの不一致変更を解決するには、
git mergetool
コマンドを使用します。git mergetool
によって Merge が開いた場合、自動ファイル マージ トピックで説明されているように、比較されたファイルは自動的にマージされます。重複する変更箇所、またはそれぞれの最初か最後が一致する変更箇所には、不一致マーカーが付けられます。このように自動マージができない各行の先頭に、赤い不一致アイコンが表示されます。
自動マージされる前のファイルを見たい場合は、元に戻す
をクリックするか Ctrl+Z キーを押下します。
Git(Cygwin)
Cygwin のファイル比較およびマージ操作で Merge が使用されるように設定できます。
以下の設定手順は、Git v2.21.0 の Cygwin 配布を使ってテストを行いました。
ファイル比較およびファイル マージに Araxis Merge を使用するには:
-
適切な Git 構成ファイル に以下の diff および merge ツール設定を追加して、更新してください。
[diff] tool = araxis [difftool "araxis"] cmd = '/cygdrive/c/Program Files/Araxis/Araxis Merge/ConsoleCompare.exe' /2 `cygpath -w $LOCAL` `cygpath -w $REMOTE` [merge] tool = araxis [mergetool "araxis"] cmd = '/cygdrive/c/Program Files/Araxis/Araxis Merge/ConsoleCompare.exe' /3 /a2 `cygpath -w $REMOTE` `cygpath -w $BASE` `cygpath -w $LOCAL` `cygpath -w $MERGED` [alias] ad = difftool --tool=araxis --dir-diff --no-symlinks ads = difftool --tool=araxis --dir-diff --no-symlinks --staged
上記のパスの
/cygdrive/c/Program Files/Araxis/Araxis Merge/Compare.exe
部分を、お使いのマシンにインストールされている Mergecompare.exe
コマンドライン ユーティリティへの完全パスに置き換えます。 ファイルを比較するには、
git difftool
コマンドを使用します。--dir-diff
オプションを指定すると、変更されたすべてのファイルを表示するフォルダー比較が行われます。上のコードで定義されている git
ad
(Araxis diff の省略)およびads
(Araxis diff stage)エイリアスは、git difftool
コマンドを介して Merge を起動するための便利なショートカットを提供します。このエイリアスの使用法については、gitad
およびads
エイリアスの使用例を参照してください。ファイルのマージ後、ブランチまたはリモート リポジトリの不一致変更を解決するには、
git mergetool
コマンドを使用します。git mergetool
によって Merge が開いた場合、自動ファイル マージ トピックで説明されているように、比較されたファイルは自動的にマージされます。重複する変更箇所、またはそれぞれの最初か最後が一致する変更箇所には、不一致マーカーが付けられます。このように自動マージができない各行の先頭に、赤い不一致アイコンが表示されます。
自動マージされる前のファイルを見たい場合は、元に戻す
をクリックするか Ctrl+Z キーを押下します。