使用Git,您如何发现当前版本和上一版本之间的差异?
git diff last version:HEAD
使用Git,您如何发现当前版本和上一版本之间的差异?
git diff last version:HEAD
当前回答
如果HEAD指向顶部提交,则可以执行以下操作:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
第一次和第二次提交之间的差异:
git diff HEAD~1 HEAD
第一次和第三次提交之间的差异:
git diff HEAD~2 HEAD
第二次和第三次提交之间的差异:
git diff HEAD~2 HEAD~1
等等
其他回答
如果上一个版本意味着最后一个标签,而当前版本意味着HEAD(当前状态),那么这只是与上一个标签的区别:
正在查找标记:
$ git tag --list
...
v20.11.23.4
v20.11.25.1
v20.11.25.2
v20.11.25.351
最后一个标签将是:
$ git tag --list | tail -n 1
v20.11.25.351
将其放在一起:
tag=$(git tag --list | tail -n 1)
git diff $tag
这也适用于标记(如果需要查看所有更改,请删除下面的“uniq”和其他部分):
git diff v1.58 HEAD
下面是相同的,这对于单片存储库中的微服务的持续集成(CI)很有用:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(信贷-https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo)
如果希望对最后n次提交进行更改,可以使用以下选项:
git diff HEAD~n
因此,对于当前提交的最后5次提交(包括当前提交在内的计数),将是:
git diff HEAD~5
我不太理解“最后版本”的含义。
由于可以使用HEAD^访问上一次提交,我认为您正在寻找以下内容:
git diff HEAD^ HEAD
这也适用于:commithash
git diff $commithash^ $commithash
从Git1.8.5开始,@是HEAD的别名,因此您可以使用:
git diff @~..@
以下也将起作用:
git show
如果您想知道head和任何提交之间的区别,可以使用:
git diff commit_id HEAD
这将启动您的视觉差异工具(如果已配置):
git difftool HEAD^ HEAD
由于与HEAD的比较是默认的,因此可以省略它(如Orient所指出的):
git diff @^
git diff HEAD^
git diff commit_id
警告
@ScottF和@Panzercrisis在评论中解释说,在Windows上必须使用~字符而不是^。
我在安装了EclipseEGit插件的EclipseIDE中使用Bitbucket。
我将文件与任何版本的历史记录(如SVN)进行比较。
菜单项目资源管理器→ 文件→ 右键单击→ 团队→ 在历史中显示。
这将带来该文件上所有更改的历史记录。现在按住Ctrl键单击并选择任意两个版本→ “相互比较”。