本地存储库中的文件与源文件之间的差异

我想找到我在本地存储库中的文件与origin master中的文件之间的差异。

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

为了简单起见,我们假设文件名为file1.txt,它的本地文件路径= [local_path],在源文件中它的文件路径= [remote-path]

我需要输入什么Git命令?


对于那些正在使用Eclipse的人,我刚刚发现你可以右键单击→分支、标签或引用→选择适当的版本,然后就可以了。

366822 次浏览

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

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、提交sha等。

如果[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可以用任何分支名称替换

为此,我写了一个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比较。

从上面的脚本中,在我遵循Git阶段开始回升的上演了提交之前,我已经预先知道其他团队在同一文件中所做的更改,这有助于我避免与远程团队不必要的解决合并冲突,或创建新的本地分支,并在主分支上进行比较和合并。

要比较本地存储库和远程存储库,只需使用下面的语法:

git diff @{upstream}

我尝试了一些解决方案,但我认为一个简单的方法是这样的(你在本地文件夹):

#!/bin/bash
git fetch


var_local=`cat .git/refs/heads/master`
var_remote=`git log origin/master -1 | head -n1 | cut -d" " -f2`


if [ "$var_remote" = "$var_local" ]; then
echo "Strings are equal." #1
else
echo "Strings are not equal." # 0 if you want
fi

运行此脚本后,您将使用最后的提交号完成本地Git和远程Git的比较。

下面是关于本地和远程上可能的不同路径的原始问题的完整答案:

  1. git fetch origin
  2. git diff master -- [local-path] origin/master -- [remote-path]

假设本地路径为文档/中,远程路径为docs2 /中,则使用git diff master -- docs/file1.txt origin/master -- docs2/file1.txt

这是改编自GitHub帮助页在这里和之前的< em > Code-Apprentice < / em >回答

检查当前分支:

git diff -- projects/components/some.component.ts ... origin
git diff -- projects/components/some.component.html ... origin

要检查其他分支,输入staging:

git diff -- projects/components/some.component.ts ... origin/staging
git diff -- projects/components/some.component.html ... origin/staging