我想找到我在本地仓库中的文件与origin master
中的文件之间的差异。
我知道有git diff
,但我只是想把它隔离到这个特定文件。
为简单起见,我们假设文件名为file1.txt
,文件路径为[local_path]
,文件路径为[remote-path]
。
我需要键入的git命令是什么?
编辑:谢谢大家的意见,这是非常有见地的。对于那些使用Eclipse的人(我和我之前应该说过),我发现你可以直接点击 - >比较 - >分支,标签或参考 - >选择合适的版本然后你去。
答案 0 :(得分:211)
如果[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
可以在上面的示例中替换为任何分支名称
答案 1 :(得分:99)
查看从远程文件到本地文件的差异:
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
像往常一样,ref1
和ref2
可以是分支名称,远程名称/分支机构,提交SHA等。
答案 2 :(得分:9)
要将本地存储库与远程存储库进行比较,只需使用以下语法:
git diff @ {上游}
答案 3 :(得分:2)
为此,我写了一个bash脚本:
33
在上面的脚本中,我将远程主分支(不一定是其主分支ANY分支)提取到#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支持很多git difftool
,我配置了difftool
以进行良好的GUI比较
从上面的脚本,我事先知道其他团队在同一个文件中做了哪些更改,然后我遵循git阶段Meld Diff Viewer
,这有助于我避免与远程团队不必要的解决合并冲突或创建新的本地分支并进行比较和合并主要分支。
答案 4 :(得分:1)
我尝试了几种解决方案,但我想这样简单的方法(您在本地文件夹中):
#!/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的最后提交编号...。
答案 5 :(得分:0)
下面是关于原始问题的完整答案,该问题谈论的是本地和远程上可能的不同路径。
git fetch origin
git diff master -- [local-path] origin/master -- [remote-path]
假设本地路径为docs / file1.txt,远程路径为docs2 / file1.txt,请使用git diff master -- docs/file1.txt origin/master -- docs2/file1.txt
此内容改编自上述GitHub帮助页面here和Code-Apprentice的答案
答案 6 :(得分:0)
要检查当前分支:
git diff -- projects/components/some.component.ts ... origin
git diff -- projects/components/some.component.html ... origin
要与其他分支进行核对,请说登台:
git diff -- projects/components/some.component.ts ... origin/staging
git diff -- projects/components/some.component.html ... origin/staging