私は自分のローカルレポジトリにあるファイルとOrigin master
にあるファイルの違いを見つけたいと思います。
私はgit diff
があることを知っています、しかし私はただそれをこの一つの特定のファイルに分離したいです。
簡単にするために、ファイルの名前はfile1.txt
で、ローカルファイルパス= [local_path]
を持ち、Originではファイルパス= [remote-path]
を持ちます。
入力する必要があるgitコマンドは何ですか?
編集:ご意見をいただきありがとうございました。 Eclipseを使っている人たち(私は以前にも述べたはずですが)を右クリック - >比較 - >分岐、タグまたは参照 - >適切なバージョンを選択するだけでそこに行くことができます。
[remote-path]
と[local-path]
が同じ場合は、
$ git fetch Origin master
$ git diff Origin/master -- [local-path]
注1:上記の2番目のコマンドは、ローカルに保存されているリモートトラッキングブランチと比較します。 fetchコマンドは、リモート追跡ブランチを更新してリモートサーバーの内容と同期させるために必要です。あるいは、あなただけのことができます
$ git diff master:<path-or-file-name>
注2:上記の例ではmaster
を任意のブランチ名に置き換えることができます。
リモートファイルからローカルファイルへの違いを表示するには
git diff remotename/branchname:remote/path/file1.txt local/path/file1.txt
他の方向の違いを見るには:
git diff HEAD:local/path/file1.txt remotename/branchname:remote/path/file1.txt
基本的に、この記法を使用して任意の2つのファイルをどこでもdiffすることができます。
git diff ref1:path/to/file1 ref2:path/to/file2
いつものように、ref1
とref2
はブランチ名、リモートネーム/ブランチネーム、コミットSHAなどです。
ローカルリポジトリとリモートリポジトリを比較するには、単純に以下の構文を使用します。
git diff @ {upstream}
そのために私はbashスクリプトを書きました:
#set -x
branchname=`git branch | grep -F '*' | awk '{print $2}'`
echo $branchname
git fetch Origin ${branchname}
for file in `git status | awk '{if ($1 == "modified:") print $2;}'`
do
echo "PLEASE CHECK OUT GIT DIFF FOR "$file
git difftool FETCH_HEAD $file ;
done
上記のスクリプトでは、リモートのメインブランチ(そのマスタブランチである必要はありません)をFETCH_HEAD
にフェッチしてから、変更したファイルのみのリストを作成し、変更したファイルをgit difftool
と比較します。
Gitでサポートされているdifftool
はたくさんありますが、私はGUIの比較を良くするためにMeld Diff Viewer
を設定しました。
gitステージuntrack-->staged-->commit
に従う前に、同じファイル内の他のチームによってどのような変更が行われたのかを事前に知っています。メインブランチ.