git:文件在本地回购和起源之间的差异

我想find我在本地回购中的文件与源代码中的文件之间的区别。

我知道有git diff,但是我只想把它隔离到这个特定的文件。

为了简单起见,可以说文件名为file1.txt,它有一个本地文件path= [local_path],在原点它有filepath = [remote-path]。

什么是我需要input的git命令?

编辑:谢谢大家的意见,这是非常有见地的。 对于那些正在使用Eclipse的人来说,我刚刚发现,你可以右键单击 – >比较 – >分支,标记或引用 – >select合适的版本,然后就可以了。

如果[remote-path][local-path]相同,则可以

 $ git fetch origin master $ git diff origin/master -- [local-path] 

注1:上面的第二个命令将与本地存储的远程跟踪分支进行比较。 fetch命令需要将远程跟踪分支更新为与远程服务器的内容同步。 或者,你可以做

 $ git diff master:<path-or-file-name> 

注2:在上面的例子中, master可以用任何分支名称来replace

查看从远程文件到本地文件的差异:

 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 

基本上你可以用任何符号来区分任何两个文件:

 git diff ref1:path/to/file1 ref2:path/to/file2 

和往常一样, ref1ref2可以是分支名称,remotename / branchname,commit SHA等等。

为此写了一个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 

在上面的脚本中,我获取远程主分支(不需要它的主分支ANY分支)到FETCH_HEAD他们做我的修改文件的列表,并比较修改后的文件git difftool

这里有很多由git支持的difftool,我configuration了“Meld Diff Viewer”,以便进行良好的GUI比较。 从上面的脚本我有事先知道在同一个文件中的其他团队做了什么样的变化之前,我跟随git阶段untrack – >阶段 – >提交,这有助于我避免不必要的解决与远程团队合并冲突或使新的本地分支和比较并在主分支上合并。