EGit - “替换为承诺...”不起作用

时间:2013-01-31 22:06:55

标签: java eclipse git eclipse-plugin egit

我在 Eclipse Indigo SR 2 Build 20120216-1857 中使用 EGit

Replace With -> Commit...函数外,几乎所有内容都运行良好。事实上它可以工作,但不会像现在这样恢复项目,因为它留下了我之后添加的新文件。

看起来它在当前HEAD和我选择恢复的提交之间有一种混合。 我真正想要的是用之前的提交替换我的项目内容,就像在分支之间切换一样。

有什么解决方案吗?有没有人知道最新版本的Eclipse是否提供了EGit的完全可用版本?

或者我误解了这个功能?

3 个答案:

答案 0 :(得分:3)

我在Egit中知道的“Replace with”是 about git checkout (而不是git revertrobinst comments below)。
并且checkout is not the same than reset

  

我真正想要的是用之前的提交替换我的项目内容,就像在分支之间切换一样。

这将更接近 feature "Reset" 选择“硬重置”将删除任何私有文件,并将索引和工作树完全恢复到选定的提交。

reset in Egit

(来自“How to delete commits with Egit?”)

  

hard - HEAD现在指向新提交,索引和工作树都会更新。

您也可以在this tutorial中看到它:

reset in Egit bis

答案 1 :(得分:3)

@VonC向我指出了一个解决方案,但这并不是我想要的。

我尝试了重置命令,但首先,我必须标记提交才能选择它。然后它更改整个master分支并取消下一个提交。实际上我不想更改任何分支或删除任何提交,我只是希望能够返回到前一个以查看整个代码并最终运行它。

最后,我可以在提交时使用 Checkout 。要查看所有提交:Right click on your project -> Show In -> History

它不会修改您正在处理的任何分支,而只是用提交保存的项目替换项目的内容。

答案 2 :(得分:0)

新创建的文件不在git索引(未跟踪)中,除非您将它们添加到。由于您要将工作区恢复为提交,因此仅修改跟踪的文件(添加到git索引)。不会触及新创建的文件。

如果您要删除未跟踪的文件:

git clean -f -d会这样做。