163

リポジトリのクローンを作成し、ファイルの変更を開始したとしましょう。ローカルのコミットされていない変更がある場合、次のように差分を実行するgit diff test.txtと、現在のローカルの HEAD と、ファイル内の変更されたコミットされていない変更との違いが表示されます。これらの変更をコミットすると、次を使用して元のリポジトリと比較できますgit diff master origin/master

しかし、ローカルでコミットする前に、ローカルの変更をサーバー上の元のリポジトリと比較する方法はありますか? git diff --cached master origin/master私は運が悪いので、さまざまな順列を試しました。

4

5 に答える 5

151

リモートリポジトリがキャッシュされていることを考えると、git fetchこれらのコミットと比較できるはずです。次のことを試してください。

$ git fetch origin
$ git diff origin/master
于 2013-07-16T23:35:42.933 に答える
48

尋ねられた質問に対する正確な回答ではないことはわかっていますが、ブランチ内のファイルとローカルのコミットされていないファイルを比較するこの質問を見つけたので、共有することにしました

構文:

git diff <commit-ish>:./ -- <path>

例:

git diff origin/master:./ -- README.md
git diff HEAD^:./ -- README.md
git diff stash@{0}:./ -- README.md
git diff 1A2B3C4D:./ -- README.md

(ファイル名を 2 回入力する必要がない方法を提供してくれた Eric Boehs に感謝します)

于 2015-07-29T14:38:58.240 に答える
23

既存のファイルへのステージングされていない (追加されていない) 変更を確認するには

git diff

これは新しいファイルを追跡しないことに注意してください。段階的でコミットされていない変更を表示するには

git diff --cached

于 2016-07-29T22:56:53.803 に答える
9

ファイルを視覚的に比較したい場合は、次を使用できます。

git difftool

変更されたファイルごとに差分アプリが自動的に開始されます。

PS: 差分アプリを設定していない場合は、以下の例のように行うことができます (私はWinmergeを使用しています):

git config --global merge.tool winmerge
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
git config --global mergetool.prompt false
于 2015-12-09T13:44:52.710 に答える