Eclipse和EGit:如何在提交到*local*repository之前轻松查看对所有已修改文件的更改

Lam*_*art 41 eclipse git egit

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

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

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

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

TL/DR - 我正在寻找一个简单的GUI等价物(在Eclipse中)来执行我可以通过命令行轻松完成的操作git vimdiff(其中vimdiff是一个git别名,使用vimdiff作为"difftool"循环遍历所有已修改的文件)后跟git commit(git add其间可能有一两个).

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

Tho*_*sen 40

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

更新:我在最新的Eclipse中试过这个,据我所知,它运行正常.这是如何做:

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

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

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

现在执行以下操作:

  • 切换到团队同步透视图.
  • 单击"同步视图"中的"小同步"按钮.
  • 选择Git
  • 选择一个合适的分支来同步,比如 refs/remotes/origin/master
  • 请务必选中"在比较中包含本地未提交的更改"框
  • 单击完成

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

Eclipse Juno的屏幕截图 -  EGit Synchronize View

  • 我现在已经习惯使用Git Staging视图了.我认为使用索引/暂存区域的git概念比Team Sync更好.我不喜欢我的小屏幕笔记本电脑上的屏幕布局,并且不认为我可以使用键盘来区分下一个文件,这对我来说是一个很大的问题.但我已经习惯了抓住鼠标.我改变了我接受的答案,但非常感谢你的时间和努力@ThomasFerrisNicolaisen - 现在我有能力对这个好的答案进行投票,即使其他对我来说效果更好. (2认同)

Dee*_*zad 26

你知道'Git Staging'视图吗?它会跟踪所有已更改的文件,您可以随时查看更改.(这可能比使用提交对话框好一点)

另一种方法是在不进行查看的情况下提交所有更改,然后使用历史记录视图比较两个提交(只需选择最后一个提交,右键单击并选择"相互比较").这样您就不必双击单个文件.如果你需要改变一些东西,你可以随时"修改"最后一次提交.(我通常遵循这种方法)

  • 感谢您的答复。不,我从没听说过Git Staging视图。不幸的是,它使用相同的比较编辑器,不允许我直接从一个修改的文件移至下一个。我开始觉得是Eclipse坏了,而不是EGit。 (2认同)
  • 它是Egit :-)但是工具在不断完善。 (2认同)
  • 哦,我的意思是说这里是错误的EGit,而不是一般的Eclipse :-) (2认同)
  • 我的问题再次被投票通过,所以我来复习它以及答案。对于它的价值,我已经习惯于使用您推荐的Git Staging视图。我最近再次尝试了Synchronize视图(不确定是在更新到Eclipse Luna之前还是之后),但是它仍然无法像我所记得的那样工作,并且Git Staging似乎工作得更好。我认为它仍然不允许我使用键盘轻松跳到下一个已更改文件的差异,但是我已经习惯于抓住鼠标并双击每个文件,因此我最近没有尝试过。 (2认同)
  • 顺便说一句,如果由于某种原因在git staging视图中看到**“未选择存储库” **,请尝试执行以下操作:1.转到“ Git Staging”视图,单击“与编辑器链接选择” “ 2.转到“ Git存储库”视图,标记所需的存储库,然后通过上下文菜单使用“将路径复制到剪贴板”(可能不需要“复制到clibboard” ...)3.将暂存视图连接到所需的回购。[来源](https://www.eclipse.org/forums/index.php?t=msg&th=222275&goto=699774&#msg_699774) (2认同)