3

我正在处理从 maven 导入的项目(但我认为构建框架并不重要)..

无论如何..如果我右键单击项目中的一个文件并选择 Git(我的 SCM 系统),我会看到一个选项“与相同的存储库版本比较”。但是,如果我右键单击此文件的包含文件夹,此选项将显示为灰色。

我可以请求 Git / Show History.. 但是当我单击并输入(例如,最新版本),然后选择“与本地比较”时,我收到一个错误对话框,显示“不适用于文件:文件://家/我/项目/等/等....'

我过去用 IDEA 做过这件事..现在我无法让它工作..有什么东西坏了或改变了..?还是我只是忘记了它是如何完成的?

谢谢 !克里斯

4

2 回答 2

2

我在上一篇文章中回答了我的问题。现在我意识到这不是我(或者可能是这种情况下的其他任何人)真正想要的答案。
上面的答案使您可以从上次签入中获取文件的树形视图,并查看项目中文件的当前状态与签入版本之间的任何差异。这就是我想要的。
但这限制了您只能查看您上次碰巧签入的文件的差异。

如果您上次签入文件a,bc, 并且自上次签入以来您修改了a,b和 ,x怎么办?
好吧,就使用这种方法来查看x.

但是还有另一种方法......它有点像黑客,但它有效。你要做的是:

  1. 将项目的当前内容递归复制到 /tmp/current
  2. 执行 agit stash以使您的项目处于上次签入的状态(无更改)
    不要担心您可以在后续步骤中恢复。
  3. 接下来转到 Intellij 项目视图中的顶级文件夹(与您复制到的相同的文件夹/tmp/current,然后右键单击并选择“ Compare Directory With”选择/tmp/current作为要比较的目标。
  4. 现在,您将在一个井井有条的列表中看到与最新签到的所有差异。
  5. 完成审核后,执行“ git stash pop”以将更改返回到您拥有项目的文件夹。

我不知道为什么没有更简单的方法可以做到这一点。
我将向 IntelliJ 提交一个错误并要求更方便的东西。

于 2012-10-26T00:34:42.413 回答
1

我将自己回答这个问题(对于任何感兴趣的人)。

这样做的方法是选择您希望检查差异的修订,然后单击显示所有受影响的路径
这将为您提供该签入中文件的树形视图。

使用此树视图,您可以Show Diff在任何工件上选择“ ”,并且您可以看到该版本的工件状态与该版本之前的工件状态之间的差异。

这基本上是我想要的.. 差异是并排的,这非常有帮助。

现在,我还没有弄清楚如何在存储库中获得两个任意修订(SHA)之间的差异......这种技术似乎只适用于区分给定修订和紧接在它之前的修订。

我在 Stack Overflow 上看到其他关于如何获取 GIT 回购修订版的并排差异的问题。好吧,这似乎可以解决问题(在大多数情况下)。
这也是 Intellij 非常酷的另一个原因(我不为他们工作,我只是喜欢这个产品)。

于 2012-10-02T21:39:13.603 回答