web-dev-qa-db-ja.com

ローカルのコミットされていない変更とオリジンを区別する方法

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

しかし、サーバー上の元のリポジトリとローカルの変更を比較する方法はありますかbeforeローカルでコミットしますか? git diff --cached master Origin/masterのさまざまな組み合わせを試しましたが、うまくいきませんでした。

126
Chaitanya

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

$ git fetch Origin
$ git diff Origin/master
122
JJD

私はそれが尋ねられた正確な質問に対する答えではないことを知っていますが、この質問がブランチとローカルのコミットされていないファイルのfileを探しているのを見つけました

構文:

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に感謝します)

33
Nate

既存のファイルに対する段階的でない(追加されていない)変更を表示するには

git diff

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

git diff --cached

18
pepestar

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

git difftool

変更されたファイルごとにdiffアプリが自動的に起動します。

PS:diffアプリを設定しなかった場合、以下の例のように設定できます(私は 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
6
Caner