46

我正在使用带有(内置)EGit 插件 v.1.3.0.201202151440-r 的 Eclipse Indigo SR2,并且在提交之前无法找到任何方法来轻松查看我的所有更改。

我多年来一直使用 Eclipse 和 SVN,而且这总是很容易做到的。我通常会右键单击我的项目,选择Team->Synchronize,双击第一个更改的文件(在 Team Sync 透视图中),然后反复点击Ctrl-.以查看一个文件中的所有更改,然后继续下一个文件,因为我为提交消息写了我的更改摘要。

但当然,git 与 Subversion 非常不同,因此我的工作流程必须改变。使用 EGit,“团队同步”似乎只对查看我的本地文件和远程存储库之间的更改有用(即在推送到远程之前)。自上次提交到本地存储库以来,我需要一种方法来查看更改。在推送到远程之前,我通常什至不关心(重新)审查更改(如果我这样做了,我更喜欢简单的等价物git log来查看我将要推送的提交)。

如果我右键单击我的项目并选择Team->Commit,我会看到一个窗口,它几乎可以完成我需要做的所有事情(选择要暂存的文件、提交、编写提交消息、修改先前的提交等)。它不允许我做的是在比较编辑器中快速轻松地查看我的所有更改。我不敢相信这种能力不存在!似乎我需要双击每个单独的文件,查看更改,关闭比较编辑器,然后双击下一个文件。这是荒谬的!

TL/DR - 我正在寻找一个简单的 GUI 等价物(在 Eclipse 中)来做我可以从命令行轻松完成的事情git vimdiff(其中 vimdiff 是一个 git 别名,它使用 vimdiff 作为“difftool”来循环浏览所有修改文件)后跟git commit(中间可能有一git add两个)。

如果没有人有好的解决方案,我很好奇其他人如何使用 EGit 处理他们的提交工作流程。从命令行提交我一直相处得很好(不是 Eclipse 对此感到高兴),但我不敢相信 EGit 在我看来几乎没用。也许我的 google-fu 不像以前那么强大了?

4

3 回答 3

41

这里说您可以看到工作树和任何给定参考之间的差异。也许您应该尝试最新版本的 Eclipse/EGit (Juno),看看它是否变得更好?

更新:我已经在最新的 Eclipse 中尝试过了,据我所知,它运行良好。就是这样:

在撰写本文时,Eclipse Juno 4.2 是您应该选择的版本。在下载页面上,您可以根据需要在几个包之间进行选择。'Eclipse IDE for Java Developers' 与 EGit 捆绑在一起,但您也可以使用 Eclipse Marketplace(在帮助菜单下)将 EGit 安装到任何发行版中。

  • 将项目导入 Eclipse 后,请确保项目是“共享的”:

右键单击项目 -> 团队 -> 共享项目.. -> Git

现在执行以下操作:

  • 切换到团队同步视角。
  • 单击同步视图中的同步小按钮。
  • 选择 Git
  • 选择一个合适的分支进行同步,比如refs/remotes/origin/master
  • 确保选中“在比较中包含本地未提交的更改”框
  • 点击完成

现在,更改一些文件并观察它们出现在同步视图中。双击更改的文件以查看差异(如下面的屏幕截图所示)。

Eclipse Juno 截图 - EGit 同步视图

于 2012-06-29T09:58:46.737 回答
28

您是否知道“Git 暂存”视图。它跟踪所有已更改的文件,您可以随时查看更改。(这可能比使用提交对话框好一点)

另一种方法是在不审查的情况下提交所有更改,然后使用历史视图来比较两个提交(只需选择最后一个最多的提交,右键单击并选择“相互比较”)。这样您就不必一直双击单个文件。如果您需要更改某些内容,您可以随时“修改”最后一次提交。(我通常遵循这种方法)

于 2012-06-29T04:58:32.580 回答
3

我是从 Eclipse Oxygen 开始写这篇文章的,但它也应该适用于其他版本。

  1. 选项 1 与团队同步视图:右键单击项目 > 比较 > 提交。您可以在此处选择您的最新提交,即使您尚未将其推送到存储库。
  2. 带有差异视图的选项 2:如果您想在不提交的情况下查看“差异”版本,您可以通过右键单击您的项目 > 团队 > stashes > Stash Changes > 选中 Include untracked files 来实现此目的。这会将您的所有更改保存到存储中。然后您将右键单击项目 > 团队 > 存储 > 选择您保存的存储。 您单击右上角的绿色箭头以将您隐藏的所有更改重新应用到代码中。在同一个存储窗口中,您将在右下角看到一个“差异”选项卡。单击差异选项卡将以红色/绿色突出显示的差异样式显示您的更改。我希望有一种方法可以在不存储的情况下生成差异视图,但这是我发现的唯一解决方法。
于 2019-06-26T15:10:05.433 回答