如何将工作文件版本与远程存储库中的某些先前版本区分开来?
说,我今天拉,对我的本地副本执行6 - 8次提交,然后想要查看我的最新工作版本(给定文件)和最新的遥控器或任何其他版本之间的差异。
答案 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,否则你就不会在本地提供远程提交来进行差异化