我如何区分一个文件,比如pom.xml,从主分支到Git中的任意旧版本?
当前回答
如果commit都不是你的HEAD,那么bash的大括号扩展非常有用,特别是如果你的文件名很长,比如上面的例子:
git diff master~20:pom.xml master:pom.xml
将成为
git diff {master~20,master}:pom.xml
更多关于bash的大括号展开。
其他回答
假设你想要区分位于firmware/src/中的interrupt.c文件
工作区域(尚未提交或暂存)和最新提交之间的Difftool:
这是一个大石头头海洛因
or
Git difftool head *interrupt.c
注意:在最后一个提交的版本之前,要区分x个版本,将“head”替换为head~x。例如,将“head”替换为“head~2”,以区分工作区域和最新提交之前的两个版本
两个特定提交版本之间的Difftool:
首先使用next行获取要比较的版本的id
git 日志 --oneline
你会得到一个包含你提交的所有版本的列表。选择两个,复制他们的id。
在{}中输入id:
通用电气电气
or
git difftool (2fae9e6,a21dd00} * interp .c
注意:如果文件之间没有差异,什么都不会打开。你只会在git bash中得到一个空行
要查看上次提交文件中修改了什么:
git diff HEAD~1 path/to/file
您可以将数字(~1)更改为您想要区别对待的第n个提交。
你可以:
git diff master~20:pom.xml pom.xml
... 通过第一个父文件将当前的pom.xml与master在20个修订之前的版本进行比较。当然,您可以用提交的对象名(SHA1sum)或指定修订的任何其他方式来替换master~20。
请注意,这实际上是将旧的pom.xml与工作树中的版本进行比较,而不是在master中提交的版本。如果你想这样做,那么你可以做以下事情:
git diff master~20:pom.xml master:pom.xml
git diff master~20 -- pom.xml
如果你不在主分支也有效。
git diff -w HEAD origin/master path/to/file
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?