1. ホーム
  2. git

[解決済み] Git mergetool と Meld の Windows 版

2023-02-03 11:12:50

質問

Linuxでは、私のお気に入りのマージツールはMeldで、Gitで動作するように使用したり設定したりするのに問題はありませんでした。 しかし、Windows では話は別でした。

まず、私はここで見つけたバンドルからMeldをインストールしました。 https://code.google.com/p/meld-installer/

それから、Meld をデフォルトの mergetool としてサポートするために .gitconfig をこのように設定しました。

[merge]                                                      
    tool = meld                                                                         

[mergetool "meld"]                                           
    path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
    keepBackup = false                                   
    trustExitCode = false

そこで、衝突があったときに、git difftoolを実行すると、Meldは実際に開きます。 しかし、Gitがdiffツールに渡すために書き出すファイルのパスは正しくありません。 たとえば、Git が BASE、LOCAL、および REMOTE ファイルをリポジトリ ディレクトリ (git mergetool を呼び出した場所) に生成したにもかかわらず、Meld はそれらのファイルを実行ファイルのディレクトリでそれぞれ開こうとします。

C:\reporoses.txt.LOCAL.2760.txt を開かず、Meld は C:\Program Files (x86)♪Meldmeld ♪roses.txt.LOCAL.2760.txt を開こうとしています。

誰か以前にこれに遭遇したか、またはGit / MeldをWindowsで正しく動作するように設定する方法を知っていますか?

どのように解決するのですか?

meld の使用方法 git difftool の代わりに git diff に置き換えます (以下のmeldのスクリーンショットも参照してください)。

1. Windows。

ダウンロードとインストール Windows版Git をダウンロードしてインストールします。これには、Windows エクスプローラのフォルダの右クリックメニューからアクセスできる、Linux ライクなターミナル "Git Bash" が含まれます。

ここから meld をダウンロードし、インストールします。 https://meldmerge.org/ .

次に meld を作るために git difftool という二つのコマンドは、Git for Windows の bash ターミナルで使うことができます ( は、Arugin が言うように )、Meld.exeへの適切なパスを使用します。

git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"

を編集することもできます。 C:\Users\YOUR_USER_NAME\.gitconfig ファイルを直接編集して、その末尾に以下を追加します (ダブルバックスラッシュの使用が必須であることに注意してください [ \\ ]をパスセパレータとして使うことが必須であることに注意してください!)。

[merge]
  tool = meld
[mergetool "meld"]
  path = C:\\Program Files (x86)\\Meld\\Meld.exe

ここで git difftool を呼び出します。 Windows 用の Git を実行すると、Meld がデフォルトの difftool ビューアとして立ち上がります! Windowsのエクスプローラでフォルダを右クリックし、--> "Git Bash"と入力すると、ターミナルを開くことができます。

2. Linuxです。

もし何もなければ、私自身の参考のために、Linux の説明書もここに一か所にまとめておいた方がいいかもしれません。

Linux ではさらに簡単です。

# 1. install meld
sudo apt update
sudo apt install meld
# 2. edit your ~/.gitconfig file (gedit GUI editor will open)
gedit ~/.gitconfig

そして、.gitconfigファイルの一番下に追加します。

[diff]
    tool = meld

それだ! git difftool が Linux Ubuntu 上で動作するようになりました!

3. Mac OS

Mac OSにMeldをインストールします。 https://superuser.com/questions/360007/how-to-install-meld-with-homebrew-on-mac-osx/1177575#1177575 .

Meldのサンプルスクリーンショット

( ソース )

メルドの使用法

# 1. See changes you've made since your last commit (do this in place of 
# `git diff`)
git difftool

# 2. Calling meld directly to compare two files:
meld path/to/file1.txt path/to/file2.txt

他人の GitHub PR を自分のマシンでローカルにレビューするには、次のようにします。 meld

注意: 以下のコマンドは、あなたがチームメイトであるため、相手のブランチがあなたの同じコード リポジトリにあることを前提としています。そうでない場合は、共通のリポジトリからではなく、フォークされたリポジトリからチェックアウトするようにコマンドを少し修正する必要があります。GitHub は、PR をオンラインで見るときに、相手のブランチをチェックアウトするために推奨されるコマンドを表示します。

  1. コマンドのみ
    git fetch origin someone_elses_branch
    git checkout someone_elses_branch
    git difftool main...HEAD  # 3 dots, NOT 2!    
    
    
  2. 詳細コメント付きコマンド
    # 1. Fetch their remote changes to your local machine into your 
    # locally-stored,remote-tracking hidden branch named
    # `origin/someone_elses_branch`
    git fetch origin someone_elses_branch
    # 2. Check out this branch locally (this creates the locally-stored branch
    # named `someone_elses_branch` from the locally-stored remote-tracking
    # hidden branch named `origin/someone_elses_branch`)
    git checkout someone_elses_branch
    # 3. Do a difftool comparison (using meld now) to see the changes
    # made on this branch from the point where they last checked out
    # and forked off of `main`. This cmd (using 3 dots) is the equivalent of
    # `git difftool $(git merge-base main HEAD) HEAD`.
    git difftool main...HEAD  # 3 dots, NOT 2!
    
    

関連する

  1. 3つのドットと2つのドットの比較。 Git diff のコミット範囲におけるダブルドット "..." とトリプルドット "..." の違いは何ですか?
  2. [私の答えは、私の git blametool ] bzr qannotateに似たgit blame guiはありますか?
  3. ここからmeldをダウンロードし、インストールします。 https://meldmerge.org/
  4. [私の答え] Git に自分の好きなエディタを使わせてコミットするには?
  5. [私のレポ] https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles
  6. Mac OS に Meld をインストールします。 https://superuser.com/questions/360007/how-to-install-meld-with-homebrew-on-mac-osx/1177575#1177575