BranchAにFileAがあり、branchBにFileBがあります。
問題は、一度に1つのファイルにしかアクセスできないことです。 FileMergeまたはmeldでファイルを比較できるようにしたいのは、それらがMac用に見つかった唯一のdiffToolsであるためです。
2つのファイルをmeld/FileMergeすることでどのように差分できますか?
[解決済み]:最初に開発された問題:FileMergeは標準入力を許可しません
Masi: opendiffを使用してFileMergeを許可 を使用して、標準入力からファイルを取得できます。したがって、次の問題は、gitのdiffツールでopendiffを使用する方法を見つけることです。
2番目に開発された問題:GitのdiffツールがMacでopendiffを使用するようにする
マージには「 git mergetool 」を使用でき、最新のgit(バージョン1.6.3以降を意味する)では、グラフィカルツールを使用して比較するには「 git difftool 」を使用できます。もちろん、最初にそれらを設定する必要がありますが、いくつかの自動検出を行います(もちろん、ハードコーディングされた設定があります)。
そしてもちろん、通常の "git diff"を使用するのと同じように、グラフィカルツール(opendiff/FileMerge)を使用できます。
Prompt> git difftool somebranch:UNREADME otherbranch:README
gitは、リポジトリパスの一部としてブランチ名をサポートしています。たとえば、リポジトリに次のファイルがある場合、README
のみにmaster
があり、UNREADME
のみにbranch
があります。
_master:README
branch:UNREADME
_
Git経由でそれらをdiffできます:
_git diff branch:UNREADME master:README
_
_git show
_を使用して、リポジトリアーティファクトを標準出力に取得できます。
_git show branch1:UNREADME
_
したがって、外部diffユーティリティがbashプロンプトで2つのファイルを取得できる場合、次のようなものを使用してそれらを差分できます。
_diff-command <(git show branch1:UNREADME) <(git show master:README)
_
<(...)
bash構文は、囲まれたコマンドの出力を受け取り、パイプで実行し、パイプのファイルパスをコマンドラインに配置します。
たとえば、現在branchAにチェックアウトしている場合は、次のコマンドを使用できます。
git diff branchB path/to/common/file/between/branches.txt
変更のサブセットが必要な場合は差分を編集するか、そのままにしてgit apply
パッチとしての差分。これを行うGUIツールに関しては、誰か他の人がそこに提案することを願っています。
ドキュメント から、.git/configファイルに次のようなものが必要です。
# Our diff algorithm
[diff]
external = opendiff