2011-11-26 120 views
4

雖然試圖還原一個承諾我對我的.emacs.d文件夾的存儲庫時我得到以下信息:Git恢復錯誤信息?

[email protected]> git revert 7fe3f 

error: could not revert 7fe3f0b... .emacs.d contents from ubuntu hp 15 
hint: after resolving the conflicts, mark the corrected paths 
hint: with 'git add <paths>' or 'git rm <paths>' 
hint: and commit the result with 'git commit' 

我所試圖做的是我對init.el文件所做的反向變化並隨之而來的是我試圖扭轉的另一項承諾。我寧願復原而不復位 - 因爲據我所知,後者完全消除了最近的提交。我想創建一個新的提交,以便我可以「恢復」恢復。

換句話說什麼,我試圖做的是這個

Git Commits [A]...[B] 

將恢復到

Git Commits [A]...[B]...[A'] 

難道我做錯了什麼?

編輯:我試圖做一個比較/合併是最好的,然後我可以另外提交,但隨後還是給了我這個新的錯誤消息:

[email protected]> git revert 7fe3f0ba3182b591f11c0b59e006dc6c990b7470 

fatal: Your local changes would be overwritten by revert. 
Please, commit your changes or stash them to proceed. 

我怎麼告訴它忽略(但不刪除)未分檔的文件,而不訴諸於.gitigore文件。我坦率地不關心大多數非臨時文件,它們是emacs臨時文件等。

+2

Git告訴你該怎麼做:解決衝突 –

+0

什麼confilict? – haziz

+0

'git status'會告訴你。 –

回答

9

問:什麼衝突?

從合併修訂版本,的反向補丁時的後續版本改變了相同的代碼行的衝突:合併衝突

編輯如果您正在恢復的最新提交,這意味着您有本地更改(請參閱git status)。不要忘記,您可以有上演未上架地方的變化。要輕鬆查看所有本地修改,使用

git diff HEAD 

你應該只打開未合併文件(git status)看到了衝突的文件(S)。你會很快看到<<<<,=====,>>>>>衝突標記。

您可以使用

git mergetool 

解決與MELD一樣,KDiff3,GVIM等

0

更人性化的工具,你讓未跟蹤文件和未分級的文件之間的混亂的衝突。

  • 未跟蹤的文件是未知的Git,你永遠不git add編他們(即git status將展示他們在Untracked files:部分)。

  • 未分級文件是已跟蹤的文件,其中有本地更改,您沒有進行提交階段(即git status將在Changes not staged for commit:部分中顯示它們)。如果您運行git commit -a,這些更改將包含在下一次提交中,但如果您運行的是git commit而不運行-a,則這些更改將包含在下一次提交中。

告訴git忽略未分離的更改沒有任何意義:更改已存在,並且它們會觸及Git關心的文件。