35

git difftoolコマンドを取得してディレクトリを開き、変更されたファイルとステージング/チェックされたファイルを比較することはできますか?

したがって、理想的には、2つのファイルが変更された場合、それらは2つだけ表示されますが、ディレクトリ内で比較されます。

gitを使用してすべてのファイルの差分を並行して提供することについての投稿を読んだので、BeyondCompareのようなツールではすべての差分がタブにありますが、それに満足していません!

変更されたファイルのコピーをステージング/チェックインされたファイルから一時フォルダーにプルし、それを開くことができます。それが唯一の選択肢ですか?

4

2 に答える 2

50

2012年6月の更新(2年半後):

これ(ファイルごとではなくディレクトリを比較する)はすぐに利用できるようです:[ANNOUNCE] Git 1.7.11.rc1
を参照してください:

" "は、ファイルペアごとに外部ツールのインスタンスを1回実行する代わりに、2つの一時ディレクトリにデータを入力した後、一度に2つのディレクトリ階層を比較できる外部差分ツールを生成するgit difftool""オプションを学習しました。--dir-diff

パッチ:ディレクトリ差分の処理方法をdifftool教えるdifftool」を参照してください。


元の回答(2010年1月)

変更されたファイルのコピーをステージング/チェックインされたファイルから一時フォルダーにプルし、それを開くことができます。それが唯一の選択肢ですか?

基本的にはい:

difftoolスクリプトは次のようになります。

  • 2つの一時ディレクトリを作成します
  • 自分自身を差分ツールとして定義します
  • gitdiffを呼び出す
    • 次に、ファイルを差分するために自分自身を呼び出します
    • そのモードでは、ファイルごとに同じスクリプトで、2つのバージョンをコピーして2つの一時ディレクトリのdiffに送信するだけです。
  • 次に、2つの一時ディレクトリでdiffツール(beyondCompareやWinMergeなど)を呼び出します。

この質問の最初の例が1つあります。

于 2010-01-22T05:15:22.660 に答える
2

私はいつも使用します--dirstat=files

rudie@devver:virenze$ git diff --dirstat=files
   4.1% modules/custom/virenze_conversations/
   7.0% modules/custom/virenze_crs/
   8.3% modules/custom/

つまり、dirsvirenze_conversationsvirenze_crsinを削除しましたcustom。(パーセンテージの意味がわかりません...)

おそらく、すべての通常diffのオプションを使用できます:--cached、ブランチ名など。

于 2013-12-23T11:15:49.953 に答える