首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >git:在拉入之后,如何将更改后的文件与以前的版本进行比较?

git:在拉入之后,如何将更改后的文件与以前的版本进行比较?
EN

Stack Overflow用户
提问于 2010-03-12 04:05:51
回答 3查看 112.7K关注 0票数 128

当我运行"git pull“时,我经常想知道文件的上一个版本和新版本之间发生了什么变化。比方说,我想知道其他人提交给某个特定文件的内容。

这是怎么做到的呢?

我假设它是"git diff“,带有提交x和提交y的一些参数,但我似乎无法获得语法。我还发现"git log“有点混乱,并且不确定从哪里获得我的最新版本文件的提交ID与新版本的提交ID。

EN

回答 3

Stack Overflow用户

发布于 2010-03-12 04:14:07

有各种奇妙的方法可以指定提交-更多详细信息,请参阅man git-rev-parsespecifying revisions部分。在这种情况下,您可能需要:

代码语言:javascript
复制
git diff HEAD@{1}

@{1}的意思是“我指定的ref的前一个位置”,所以它的计算结果是您之前检出的内容-就在pull之前。如果您的工作树中也有一些更改,并且您不想看到它们之间的差异,那么您可以在末尾添加HEAD

我不知道你问的“我最新版本文件的提交ID”是什么--提交"ID“(SHA1散列)是在git log输出中每个条目的顶部有40个字符的十六进制。它是整个提交的散列,而不是给定文件的散列。你并不真的需要更多-如果你想在整个过程中只需要一个文件,那么

代码语言:javascript
复制
git diff HEAD@{1} filename

这是一件很普遍的事情--如果您想要了解给定提交中文件的状态,只需指定提交和文件,而不是指定特定于该文件的ID/散列。

票数 169
EN

Stack Overflow用户

发布于 2012-04-23 14:09:37

我喜欢使用:

代码语言:javascript
复制
git diff HEAD^

或者如果我只想比较一个特定的文件:

代码语言:javascript
复制
git diff HEAD^ -- /foo/bar/baz.txt
票数 61
EN

Stack Overflow用户

发布于 2010-03-12 04:14:52

如果你直接执行git pull,那么你要么“快进”,要么合并来自远程存储库的未知数量的提交。但是,这是作为一个操作发生的,所以在拉取之前的最后一次提交将是引用日志中的最后一个条目,并且可以作为HEAD@{1}进行访问。这意味着您可以执行以下操作:

代码语言:javascript
复制
git diff HEAD@{1}

然而,我强烈建议,如果你发现自己做了很多事情,那么你应该考虑只做一个git fetch,并在手动合并或重新建立基础之前检查所获取的分支。例如,如果你在master上,并且我们要拉入/master:

代码语言:javascript
复制
git fetch

git log HEAD..origin/master

 # looks good, lets merge

git merge origin/master
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2428270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档