web-dev-qa-db-ja.com

リモートとローカルのレポジトリ間のgit diff

プルリクエストを送信する前にGitHubリポジトリを使用してローカルファイルをdiffして、表示される内容を確認しようとしていますが、これを行う正確な方法はありますか? GitHubの比較ツールがGitのdiff?を操作すると仮定します。

51
Terry

pullをしないでください:

  • fetchを実行します(構文はgit pullと同じですが、自動的にはマージされません)
  • destブランチと他のブランチの間でdiffを実行します
  • 必要に応じてmergeを実行します
41
Denys Séguret

ローカル作業ディレクトリとリモートブランチを比較するには、たとえばOrigin/master

  1. git fetch Origin master
    これは、「Origin」という名前のリモートから「master」という名前のブランチをフェッチするようにgitに指示します。 Git fetchnot作業ディレクトリ内のファイルに影響します。 git pullのように変更をマージしようとしません。
  2. git diff --summary FETCH_HEAD
    リモートブランチを取得すると、FETCH_HEADを介してローカルで参照できます。上記のコマンドは、作業ディレクトリファイルをFETCHされたブランチのHEADと比較し、結果を要約形式で報告するようにgitに指示します。要約形式は、変更の概要を示します。もう少し情報が必要な場合は、--statではなく--summaryを使用してください。
  3. git diff FETCH_HEAD -- mydir/myfile.js
    特定のファイル(myfile.jsなど)の変更を表示する場合は、--summaryオプションをスキップして、目的のファイル(またはツリー)を参照します。
95
HieroB

「問題はWindowsとUnixのLFであった」というOPのコメントによると、これは助けになるはずです。

次のconfigコマンドを使用して、eolコードの違いを無視するようにgit-diffに指示できます。

git config --global core.whitespace cr-at-eol
4
gzh

次を使用できます:git diff remote/my_topic_branch my_topic_branch

どこmy_topic_branchはトピックブランチです。

0
Elisha Senoo