Git还原错误消息?

时间:2011-11-26 21:35:34

标签: git git-revert

在尝试恢复我对.emacs.d文件夹的存储库的提交时,我收到以下消息:

haziz@haziz> 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']

我做错了吗?

编辑:我尝试进行差异/合并,然后再进行另一次提交但是它仍然给了我这个新的错误消息:

haziz@haziz> git revert 7fe3f0ba3182b591f11c0b59e006dc6c990b7470

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

如何在不使用.gitigore文件的情况下告诉它忽略(但不删除)未分段文件。坦率地说,我并不关心大多数未受控制的文件,这些文件是emacs临时文件等。

2 个答案:

答案 0 :(得分:9)

  

问。有什么冲突?

合并该修订版的反向修补程序时的冲突,以后的修订版更改了相同的代码行:合并冲突

  

修改如果您要还原最新提交,则表示您进行了本地更改(请参阅git status)。不要忘记您可以进行暂存非暂存本地更改。要轻松查看所有本地更改,请使用

   git diff HEAD

您应该打开未合并的文件(git status)以查看冲突的文件。您很快就会看到<<<<=====>>>>>冲突标记。

您可以使用

git mergetool

通过更多用户友好的工具解决冲突,如Meld,KDiff3,Gvim等。

答案 1 :(得分:0)

您在未跟踪文件和未分段文件之间混淆。

  • Git不知道未经跟踪的文件,您永远不会git add编辑它们(即git status会在Untracked files:部分显示它们。

  • 非暂存文件是具有本地更改的跟踪文件,您没有提交这些文件进行提交(即git status将在Changes not staged for commit:部分显示)。如果您运行git commit -a,这些更改将包含在下一次提交中,但如果您在没有git commit的情况下运行-a,则不会包含这些更改。

告诉git忽略未分级的更改是没有意义的:更改就在那里,它们会触及Git关心的文件。