Gitコミュニティがサイドバイサイドの差分を無視するように見えるのはなぜですか[非公開]


33

以前は、Windows、SVN、Tortoise SVN、およびBeyond Compareを使用していました。コードレビューを行うのに最適な組み合わせでした。

現在、OSXとGitを使用しています。私は、bashスクリプトとGitxおよびDiffMergeを組み合わせて、やっと受け入れられるソリューションを思いつくことができました。

1年以上、このセットアップと同様のセットアップをいじっていました。また、Github diffビューアとGitx diffビューアを使用してみたので、チャンスを与えていないわけではありません。

Gitで素晴らしいことをしている賢い人がたくさんいます。ファイル全体を表示するオプションを使用して、横並びの差分を表示しないのはなぜですか?両方を使用したことがある人にとっては、少なくとも簡単な確認以上に、単一の+/-ビューの方が好きな人はいません。


TortoiseGit でディフにBeyond Compareを使用するように設定できます。この場合、ファイル全体が並んで表示されます(ただし、この設定を個人的にテストしたことはありません[ただし、最近の予定です])。
ワイルドピーク

1
コメントだけですが、Windows、SVN、Beyond Compareを使用しています。しかし、今はUbuntu + Gitを使用しています。幸運なことに、私はまだ旧友のBeyond Compareを使用できます。Ubuntuでも問題なく動作します。そして無料ではありませんが、私にとっては一銭の価値があります。:)申し訳ありませんが、OSXでソリューションを提供することはできませんが、Beyond CompareがWindows専用のソリューションであると人々に思わせたくありませんでした。
デビッドS

7年後、私はまだこのように感じていますが、最も複雑な場合を除いて、インラインdiffを好むように自分を訓練しました。それから、私の旧友であるBeyond Compareを紹介します。
カイルヘイロニムス

回答:


19

私はこれについてLinusのことを話すことはできませんが、gitがdifftoolsを処理する方法は、哲学的には非常に未熟です。gitは非常にうまく機能し、より洗練されたdiffやマージを含む他のすべてに外部ツールを使用します。

OS XでもgitでDiffMergeを使用していますが、bashシェルに頼る必要はありません。トリッキーでしたが、Gitのdifftoolとmergetoolの設定を構成してDiffMergeを直接呼び出し、優れた視覚的なサードパーティツールでdiffを表示してマージの競合を解決できるようになりました。

これが私の設定です:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge

1
これは問題ありませんが、複数のファイルが変更された場合、gitがそれらを表示することを決定する順序で、一度に1つずつそれらを確認します。もう1つを開くには、1つを閉じる必要があります。すべてのファイルを一度に見たいときにbashスクリプトも使用するのはそのためです。
カイルヘイロニムス

「すべてを一度に見る」という点で、あなたが何を期待しているのかわかりません。しかし、チェックしてくださいgit diff --stat。変更されたすべてのファイルと、変更された行の数の素晴らしいグラフィカルなリストを提供します。
ダン・レイ

この「一度にすべて開く」ことについてもう少し考えてみてください...一度にいくつのファイルを編集/表示できますか?どの時点でも1つのファイルしか見ることができません。私はあなたが望んでいることを得られないだけだと思います。
ダン・レイ

2
最も良い例は、Beyond Compareを使用したTortoiseSVNです。たとえば、同僚の最後のコミットで3つのファイルが変更されている場合、3つのファイルがリストに表示されます。次に、適切なファイルをクリックして、違いを確認します。また、3つのウィンドウを開いて、それぞれに異なるファイルを表示することもできます。その後、必要に応じて、変更を調査するためにそれらの間を行き来できます。基本的に、それはあなたがあなたの条件ですべての変更を見ることができるようにします、あなたのvcsによって指示された順番で連続してではありません。
カイルヘイロニムス

1
タワーをチェックアウトする必要があります。これは私が今まで見た中で最高のMac git guiであり、あなたが話していることとそれ以上のことをします。git-tower.com
ダン・レイ

16

SVN自体はサイドバイサイドソリューションも提供しないことに気付くでしょう。あなたがリストしたのはサードパーティのツールです。gitのほとんどのものと同様に、これは非常に構成可能であり、すぐに使用できる優れたツールサポートを備えています。あなたは持っていますmergetoolを設定しますか?そうでない場合は、する必要があります。もしそうなら、試してみてくださいgit difftool。次に、設定オプションのマニュアルページご覧ください

KDiff3はマージツールとして使用します。これは、クロスプラットフォームの優れたツールであり、それ以上の構成がなくても、git difftoolまさにあなたが求めていることを行うからです。


2
実際、difftoolでは問題ありませんが、多くのファイルを見ると失敗します。一度に1つずつ開く必要があります。一度にすべてを開くには、bashスクリプトハッカーを実行する必要があります。
カイルヘイロニムス

9

それが* nix哲学です。これらのツールを使用する多くの人々は、ターミナルで多くの時間を過ごします。端末では、キーボードからマウスに手を動かす必要はありません。私は視覚的なdiff / mergeツールよりも+/-スタイルを好むことを知っていますが、それは主に違いだけを気にするからです。私は、変化の周りの3-4行と変化そのものに関心があります。それ以上のものは、私を本当に助けてくれない追加情報です。

Diffは、変更された内容をすばやく確認するためによく使用されます。コードを読まないでください。

GNUシステムのデフォルトのdiffと比較して、視覚的なdiffツールが非常に便利だとは思いません。彼らが私にできることは、マウスをいじり始めてファイルをスクロールさせ、ユーザーインターフェイスを見つけてから、コマンドラインに戻り、diffで見られる問題について何かをするのに苦労することです。


1
vimdiffは大丈夫です。通常はパーツのみを表示します。マージに使用します。マウスは必要ありません。
代替案

8
同僚が行った変更を見たことはありますか?あなたが慣れていないコードの領域へ?私はいつもやっていて、すべてのコードを並べずにやることを想像することはできません。私にとって、+ /-はbeによる変更には適していますが、他の人には適していません。あなたが間違っている、悪い、または何かと言っていない。ただ尋ねる。
カイルヘイロニムス

1
私はよく、よく知らない分野で同僚によって変更されたコードにバウンスします。私はこれまでに3〜4回並べて使用したことがあると思いますが、簡単に使用できます。好みの操作スタイルに依存します。それはあなたのために働く、私はそれが不必要だと思う。
ブライアンノブラウフ

0

私の個人的な使用から、答えは大部分が差分は問題にならないほど十分に短いということだと思います。

コードレビューには、フル機能のコードレビューツールを使用します。これにより、コメント、構文の強調表示、並べて表示など、好きなものがすべて表示されます。

git diffコミットするコードをステージングするときに、ほぼ排他的に使用します。その場合、差分は十分に小さく、最新のものなので、何が起こっているのかを覚えるためにコンテキストを見る必要はありません。

私が選んだコードレビューツールPhabricator、または言語コンテキストを認識できるIDE統合ツール。githubのpull-requestフローはコードレビューにとってひどいものだと思います。これは主に、サイドバイサイドではなく統一されたdiffを表示するためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.