2013-01-31 73 views
3

我正在使用EGitEclipse Indigo SR 2 Build 20120216-1857EGit - 「Replace With Commit ...」不能正常工作

幾乎一切正常,除了Replace With -> Commit...功能。實際上它可以工作,但並不像它那樣恢復項目,因爲它留下了我以後添加的新文件。

它看起來像是在當前HEAD和我選擇恢復的提交之間進行混合。 我真正想要的是用之前的提交代替我的項目的內容,就像它在分支之間切換時一樣。

有沒有解決方法?有誰知道Eclipse的最新版本是否提供EGit的完整工作版本?

還是我誤解了這個功能?

+0

你想恢復項目的以前的狀態?永久或暫時?或者只是一個文件? – tewe

+0

我只想從之前的提交中恢復項目的內容。無論我嘗試整個項目還是在** src **文件夾中都不起作用,或者我不瞭解此功能,但* Replace With ... *不言自明。 – Flawyte

+0

@tewe我編輯了我的問題。 – Flawyte

回答

3

@VonC指出我朝着一個解決方案,但是這不是我真正想要的東西。

我試過重置命令,但首先,我必須標記提交可以選擇它。然後它改變整個master分支並取消下一個提交。事實上,我不想更改任何分支或刪除任何提交,我只是想能夠返回到前一個來查看整個代碼並最終運行它。

最後,我可以讓它使用簽出對提交。要查看所有提交:Right click on your project -> Show In -> History

它不會修改您正在處理的任何分支,而只是將您的項目的內容替換爲提交已保存的分支。

+0

+1。 Cjeckout確實比我的「重置」答案更合適。 – VonC

0

新創建的文件不在git索引(untracked)中,除非將它們添加進去。由於您將工作空間還原爲提交,因此只有您的跟蹤文件(添加到git索引)纔會被修改。新創建的文件不會被觸及。

如果你想刪除未跟蹤文件:

git clean -f -d將做到這一點。

+0

當我說「新文件」時,我正在談論已經提交了至少1次的文件,而不是未跟蹤的文件。 – Flawyte

3

的 「Replace with」 我知道是例如:It about git checkout(而不是git revert,爲robinstcomments below)。
checkout is not the same than reset

我真正想要的是將我的項目的內容替換爲之前的提交,就像您在分支之間切換時一樣。

這將是更接近feature "Reset"
選擇「硬重置」將刪除任何私人文件,並將索引和工作樹完全恢復到所選提交。

reset in Egit

(從 「How to delete commits with Egit?」)

hard - 頭部點現在到了新的承諾,指標和工作樹進行更新。

你也可以看到它在this tutorial

reset in Egit bis

+0

這可能是我正在尋找的,但是當我選擇* Reset *時,我只能選擇一個分支,一個ref或一個標籤而不是提交。我是否被迫標記我想要去的提交還是有另一種方式? – Flawyte

+0

@miNde在這種情況下,在你想要重置的提交上設置一個標籤;) – VonC

+0

好吧thx它的工作,但我有一個問題,使用*重置*,因爲它使主分支刪除所有提交之後作出的我選擇重置。但我不想這樣做,我只是想能夠返回到先前的提交以查看整個代碼並最終運行它。最後,我可以通過在提交上使用* Checkout *來工作。 – Flawyte