問題タブ [git-diff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 1つのファイルをGitの任意のバージョンに比較するにはどうすればよいですか?
pom.xml
たとえば、ファイルをマスターブランチからGitの任意の古いバージョンに比較するにはどうすればよいですか?
git - git diff (difftool ではない) と git log -p を *.sql ファイルと Windows PowerShell で動作させる
への呼び出しで違いを表示するように外部ツールを構成する方法を知っていますgit difftool
。ただし、ファイルの履歴全体のすべての変更の「ダンプ」をコンソール ウィンドウに表示したい場合は、git log -p <filename>
. 私が抱えている問題は、Windows 環境の *.sql ファイルにあります。 difftool
(私の設定したツールを使用して)Unicodeファイルを正しく処理しますが、diff
そうではありません。これは、内部で使用していると思い git log -p
ます。
特定の/構成された拡張子のファイルで「機能」する方法はありgit diff
ますか?実際には ANSI 文字しかなく、コンソールに出力された実際のテキストの変更を表示します (私の場合、コンソール内でホストされている Windows PowerShell)。
注: git diff に UTF16 を認識させることに関するこの質問/回答を見てきましたが、動作させることができませんでした (iconv と mktemp の両方がシステムに存在しませんでした)。
多分これは、唯一の解決策として検討/実験を続けるべきアプローチですか?または、私の唯一の解決策は、ANSI 文字のみが存在することがわかっているファイルが ANSI として保存されるようにすることです。*.sql ファイル (およびそれを認識していない他のファイル) で現在保持しているすべての履歴を失うのは残念です。現在、Unicode として保存されています - 私は Visual SourceSafe から新しく変換された git ユーザーなので、まだ変更したすべてのファイル タイプの違いを表示する必要はありません)。
git - Git の「ペアリングが壊れています」と「不明」のステータスは何を意味し、いつ発生しますか?
git diff
たとえば、の一部のオプションでは--name-status
、ファイル名の横にステータス レターが出力されます。彼らです:
A、C、D、M、R、T、U、X、B
…そして彼らは意味します
追加 (A)、コピー済み (C)、削除済み (D)、変更済み (M)、名前変更済み (R)、タイプ (通常のファイル、シンボリックリンク、サブモジュールなど) の変更 (T)、マージされていない (U)、不明 (X) )、またはペアリングが壊れています(B)。
質問:X
とのステータスはどのようB
に解釈されるべきですか? また、どのような状況でそれらが表示されるようになったのですか? の出力にそのようなステータスが表示されるまでの一連の手順とgit-diff
、それらを修正する方法を教えてください。
git - git-diff をその子なしで 1 つのディレクトリのみに制限するにはどうすればよいですか?
git diff --name-status
2 つのコミット間で変更/追加/削除/名前変更/コピーされたファイルを追跡するために使用していますが、うまく機能します。
ここで、ファイルfile1
を に移動しnewdir/file1
、コミットしてから git diff を実行すると、次のようになります。
指定されたディレクトリ内の変更のリストに制限するが、その子には制限しないように git に依頼する方法はありますか? newdir
ルート ディレクトリとディレクトリの両方の正確な変更を個別に知りたいです。の場合newdir
は簡単です。
…しかし、ルート ディレクトリで「補足的な」差分情報を取得するにはどうすればよいですか? つまり、この出力:
-C
同じディレクトリ内の名前変更とコピーを検出するオプションを保持したいことに注意してください。
git - Git - sha がある場合、以前のバージョンとの差分を確認する最も簡単な方法
私の同僚が Git にいくつかの変更をチェックインしました。私はそれらの変更が何であったかを正確に知りたいと思っています。言い換えれば、彼のチェックインとその親の間の違いです。
私にとって論理的に思えたのは、次のコマンドを実行することでした。
しかし、これはうまくいきませんでした。その SHA と現在の作業コピーとの差分が表示されているようです。
特定の SHA とその親の間の差分を表示する正しいコマンドは何ですか?
git - git diff:変数の名前変更を無視します
リファクタリングを行っているときに、変数の名前をからに変更しoldName
ましたnewName
。現在のgit diff
違いを無視するようにコマンドに指示する方法はありますか?これを実行して、他の重要な変更のみに焦点を当てたいと思います。これが可能な場合は、無視するように複数の変数の名前変更を指定することもできます。たとえば、toからtoへの変更を無視します...?oldName
newName
oldName1
newName1
oldName2
newName2
git - 他の差分が競合するのに、なぜ Filemerge で差分の読み込みが競合しないのですか?
ファイルマージで差分をロードするように GIT を設定しましたが、競合が発生した場合、端末に差分を出力するだけです。
これを回避する方法、または競合を処理するためのより良いアプリはありますか?
git - git diff で opendiff を使用できません
git diff のデフォルトの diff ツールとして opendiff を使用したいと考えています。これは以前は機能していましたが、何らかの理由で機能しなくなりました。私はスクリプトを使用しています:
これは.gitconfigで設定されています:
これは最近私にとってはうまくいきませんでした。なにが問題ですか?
更新: 新しいリポジトリのクローンを作成すると、すべて正常に機能しました! 変!
git - Gitでは、ブランチの最初のコミットをどのように比較しますか?
ローカルブランチに対していくつかのコミットを行いましたが、現在持っているものをブランチの開始状態と比較するための最良の方法がわかりません。ブランチに6つのコミットがあった場合のようなことができることは知っていますがgit diff HEAD HEAD~6
、コミットの数に依存しない何かを望んでいました。
編集:私はこれについて言及しませんでした:私が分岐したコミットのハッシュを取得するためにログを掘り下げる必要がないことを望んでいました。たとえば、80のコミットがある場合、これは楽しい作業ではありません。
また、私が分岐した元のブランチにはすでにいくつかの変更が加えられていると想定します。
git - git diff の /a /b プレフィックスの理由は何ですか
私はここ数年 Git を使用しておりgit diff
、変更されたファイルの名前の前にa/
とb/
. 最終的には便利なユースケースに出くわすだろうと思っていましたが、今までは常に面倒で役に立たなかった.
それは何のために良いですか?これがデフォルトで有効になっているのはなぜですか? どのような状況で役立ちますか?