Diff当前文件版本和前一个远程存储库

时间:2012-05-16 22:02:35

标签: git diff

如何将工作文件版本与远程存储库中的某些先前版本区分开来?

说,我今天拉,对我的本地副本执行6 - 8次提交,然后想要查看我的最新工作版本(给定文件)和最新的遥控器或任何其他版本之间的差异。

4 个答案:

答案 0 :(得分:11)

如果您正在谈论一个远程分支,比如origin/master,您可以使用~^以相同的方式引用相对于分支的祖先提交当地分支机构:

# what change was introduced to origin/master in the last 4 commits?
git diff origin/master origin/master~3

如果您希望将当前工作目录与origin/master上的第5个最新提交区分开来,则省略第一个参数:

git diff origin/master~4

答案 1 :(得分:11)

要查看您最新的工作版本与#39;之间的差异。 (我将其作为您的工作副本)使用:

git diff <remote>/<branch>

如果您认为其他人已经推送到遥控器,那么您需要获取更改:

git fetch <remote> <branch>
git diff <remote>/<branch>

如果要将diff限制为仅包含文件或目录中的所有文件,请使用:

git diff <remote>/<branch> -- /path/to/file
git diff <remote>/<branch> -- /path/to/           #all files in directory

您可以使用git difftool ...启动视觉差异工具(假设您的计算机上存在一个)。

答案 2 :(得分:3)

假设path/to/file.txt是一个提交给远程分支origin/master并且也在我的工作区中的文件,已提交给本地分支my-branch

最新版本的path/to/file.txt在我的工作区中提交了远程分支和(可能是未提交的)版本之间的差异:

git diff origin/master:path/to/file.txt path/to/file.txt

我的工作空间中提交远程分支三个提交的path/to/file.txt版本和(可能是未提交的)版本之间的差异:

git diff origin/master~3:path/to/file.txt path/to/file.txt

提交远程分支的最新版本path/to/file.txt与提交给my-branch的最新版本之间存在差异:

git diff origin/master:path/to/file.txt my-branch:path/to/file.txt

答案 3 :(得分:0)

git fetch;  #this will attach the remote branch commits to your local tree
git diff FETCH_HEAD    #diff your working dir version of my_file vs the remote tip

same as
git diff remotes/origin/branch 

但是你必须先进行git-fetch,否则你就不会在本地提供远程提交来进行差异化