Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse和EGit:如何在提交到*local*存储库之前轻松查看对所有修改文件的更改_Eclipse_Git_Egit - Fatal编程技术网

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

Eclipse和EGit:如何在提交到*local*存储库之前轻松查看对所有修改文件的更改,eclipse,git,egit,Eclipse,Git,Egit,我正在使用带有内置EGit插件v.1.3.0.201202151440-r的EclipseIndigoSR2,在提交之前无法找到任何方法轻松查看所有更改 我在SVN中使用Eclipse已经很多年了,这总是很容易做到的。我通常会右键单击我的项目,选择Team->Synchronize,双击Team Sync透视图中第一个更改的文件,然后按Ctrl-。重复查看一个文件中的所有更改,然后继续下一个文件,因为我为提交消息编写了更改摘要 但当然,git与Subversion非常不同,因此我的工作流程必须改

我正在使用带有内置EGit插件v.1.3.0.201202151440-r的EclipseIndigoSR2,在提交之前无法找到任何方法轻松查看所有更改

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

但当然,git与Subversion非常不同,因此我的工作流程必须改变。使用EGit,Team Sync仅在查看本地文件和远程存储库之间的更改时(即推送到远程存储库之前)才有用。我需要一种方法来查看自上次提交到本地存储库以来所做的更改。通常,我甚至不想在推送到远程之前重新查看更改,如果我这样做了,我更喜欢使用简单的git日志来查看我要推送的提交

如果我右键单击我的项目并选择Team->Commit,我将看到一个窗口,该窗口几乎完成了我需要执行的所有操作—选择要暂存的文件、提交、编写提交消息、修改以前的提交,等等。。它不允许我在比较编辑器中快速、轻松地查看所有更改。我不敢相信这个能力不存在!似乎我需要双击每个文件,查看更改,关闭比较编辑器,然后双击下一个文件。那太荒谬了

TL/DR—我在Eclipse中寻找一个简单的GUI等价物,以便使用git vimdiff在命令行中轻松完成我能够完成的工作,其中vimdiff是一个git别名,它使用vimdiff作为difftool,循环遍历所有修改过的文件,然后进行git提交,可能中间有一两个git add


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

你知道“Git Staging”的观点吗。它跟踪所有已更改的文件,您可以随时查看更改。这比使用提交对话框要好一点

另一种方法是提交所有更改而不进行审阅,然后使用“历史记录”视图比较两次提交,只需选择最后一次最上面的提交,右键单击并选择“相互比较”。这样,您就不必一直双击各个文件。如果您需要更改某些内容,您可以随时“修改”上次提交的内容。我通常采用这种方法

说您可以看到工作树和任何给定引用之间的差异。也许您应该尝试一下最新版本的Eclipse/EGit朱诺,看看它是否变得更好

更新:我已经在最新的Eclipse中尝试过了,就我所知,它工作得很好。以下是方法:

在撰写本文时,EclipseJuno4.2是您应该选择的版本。在下载页面上,您可以根据需要在多个软件包之间进行选择。“EclipseIDEforJava开发人员”与EGit捆绑在一起,但是您也可以使用Eclipse市场的帮助菜单将EGit安装到任何发行版中

将项目导入Eclipse后,请确保项目已共享: 右键单击项目->团队->共享项目..->吉特

现在请执行以下操作:

切换到团队同步透视图。 单击“同步”视图中的“小同步”按钮。 选择Git 选择一个合适的分支进行同步,例如refs/remotes/origin/master 确保选中“在比较框中包含本地未提交的更改” 单击“完成” 现在,更改一些文件并观察它们在“同步”视图中的显示。双击更改的文件,查看下面屏幕截图中的差异


我是在EclipseOxygen上写这篇文章的,但它也应该适用于其他版本

带有团队同步视图的选项1:右键单击项目>比较>提交。您可以在此处选择最新提交,即使尚未将其推送到存储库。 使用diff view的选项2:如果希望在不提交的情况下查看diff版本,可以通过右键单击项目>团队>隐藏>隐藏更改>选中包含未跟踪文件来实现。这将把您的所有更改保存到一个存储库中。然后右键单击项目>团队>隐藏>选择保存的隐藏。单击右上角的绿色箭头,将所有隐藏的更改重新应用到代码中。在同一个隐藏窗口中,您将在右下角看到一个Diff选项卡。单击“差异”选项卡将以红色/绿色高亮显示的差异样式显示您所做的更改。我希望他们 e是一种无需隐藏即可生成差异视图的方法,但这是我找到的唯一解决方法。
谢谢你的回复。不,我从未听说过Git Staging视图。不幸的是,它使用相同的比较编辑器,不允许我直接从一个修改过的文件移动到下一个文件。我开始觉得是Eclipse出了问题,而不是EGit。是EGit:-但工具一直在不断改进。哦,我的意思是说,是EGit出了问题,而不是一般的Eclipse:-我的问题再次被投票表决,所以我来回顾它,以及答案。无论如何,我已经习惯了使用您推荐的Git Staging视图。我最近再次尝试了Synchronize视图,不确定这是在我升级到EclipseLuna之前还是之后,但它仍然没有我记忆中的那么好,Git Staging似乎工作得更好。我认为它仍然不允许我使用键盘轻松跳转到下一个更改文件的差异,但我已经习惯于抓取鼠标并双击每个文件,所以我最近没有尝试过。顺便说一句,如果出于某种原因,您在git staging视图中看到没有选择存储库,请尝试以下操作:1。转到Git Staging视图,单击带有编辑器的链接,选择2。转到Git repositories视图,标记所需的repo,并通过contextmenu使用复制路径到剪贴板可能不需要复制到剪贴板。。。3.暂存视图已连接到所需的回购。谢谢你的回复。我认为这对我没有帮助,但无论如何我都看不到同步子菜单。可能是因为此时我没有处理分支,或者可能是因为我使用的是旧版本的Eclipse。谢谢你引起我的注意。我不知道几个月前在这台开发机器上安装Eclipse时是如何导致错误下载的。Eclipse未能在Help->About中显示名称而不是版本号,我觉得这很愚蠢。我相信我是最新的。哇,Eclipse网站变得非常混乱。它说了很多,但没有传达关于朱诺的有用信息。通过阅读EclipseDevelopmentWiki,我发现只有本月发布的Juno的最新4.2版本才被推荐用于通用UE。我想我并没有像我想的那样过时。谢谢你详细周到的更新。虽然我认为还没有人回答我的问题,但我恐怕没有答案,如果我有这样的声誉,我会投票支持你的答案。我想我会很快尝试Juno,但你所描述的似乎是我已经熟悉的功能——我在问题的第二段中自己描述了它。既然你没有提到它,我不认为它解决了第2段中提到的主要问题:你还需要双击每个文件,还是可以轻松地从一个文件切换到下一个文件?另外,使用自定义键盘快捷键,我现在有了Ctrl+。设置为在编辑器中进行比较时选择下一个更改,并按Ctrl+Shift+。在Windows中设置为“下一步”。现在我可以使用Ctrl+period轻松地从一个更改跳到另一个更改,然后当我到达文件的底部时,我使用Ctrl+Shift+period跳到下一个修改过的文件。我用键设置了相反的快捷方式,现在我已经非常习惯使用Git Staging视图了。我认为使用git概念的索引/暂存区域比TeamSync更有效。我不喜欢我的小屏幕笔记本电脑的屏幕布局,也不认为我可以用键盘来区分下一个文件,这在一开始对我来说是个大问题。但我已经习惯了抓老鼠。我改变了我被接受的答案,但非常感谢你的时间和努力@ThomasFerrisNicolaisen-现在我有权投票给这个好答案,尽管另一个对我来说更好。4年后,仍然需要的是一个从svn到git的范例shitft导游。至少我们有stackoverflow。听起来很有用!就我个人而言,我发现月食从Luna重写开始就非常糟糕,以至于在2016年,我最终改用IntelliJ,并没有回头看。