[解決済み] Git mergetool と Meld の Windows 版
質問
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 をオンラインで見るときに、相手のブランチをチェックアウトするために推奨されるコマンドを表示します。
-
コマンドのみ
git fetch origin someone_elses_branch git checkout someone_elses_branch git difftool main...HEAD # 3 dots, NOT 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!
関連する
- 3つのドットと2つのドットの比較。 Git diff のコミット範囲におけるダブルドット "..." とトリプルドット "..." の違いは何ですか?
-
[私の答えは、私の
git blametool
] bzr qannotateに似たgit blame guiはありますか? - ここからmeldをダウンロードし、インストールします。 https://meldmerge.org/
- [私の答え] Git に自分の好きなエディタを使わせてコミットするには?
- [私のレポ] https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles
- Mac OS に Meld をインストールします。 https://superuser.com/questions/360007/how-to-install-meld-with-homebrew-on-mac-osx/1177575#1177575
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedmaster -> master (non-fast-forward) と git ! [拒否] master -> master (フェッチファースト)
-
エラーが発生しました。マージされていないファイルがあるため、プリングはできません
-
[解決済み] git に自分の好きなエディタを使わせてコミットするにはどうしたらいいですか?
-
[解決済み] Gitのビジュアルマージツールとして最適なものは?[クローズド]
-
[解決済み] gitのdifftoolとmergetoolとしてMeldをセットアップして使用する
-
git-fatal: 設定されたプッシュターゲットがありません / 警告: store/README.md の LF は CRLF に置き換えられています。
-
[解決済み】Git diffのコミット範囲にあるダブルドット「...」とトリプルドット「...」の違いは何ですか?重複] [重複] [重複] [重複] [重複] [重複
-
[解決済み] Git の diff で、変更された行のみを表示するようにした
-
[解決済み】"git diff "を実行したときに、サイドバイサイドのdiffを取得するにはどうすればよいですか?
-
[解決済み] VSCodeからgitの統合を削除する