6

在尝试恢复对 .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 文件所做的更改,然后是我试图反向的另一个提交。我宁愿恢复而不是重置 --hard 因为据我所知后者完全删除了最近的提交。我想创建一个新的提交,以便我可以“还原”还原。

换句话说,我想做的是这个

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 临时文件等。

4

3 回答 3

9

:什么冲突?

合并该版本的反向补丁的冲突,当后来的版本更改了相同的代码行时:合并冲突

编辑如果您要恢复最新的提交,这意味着您有本地更改(请参阅git status)。不要忘记您可以进行分阶段非分阶段的本地更改。要轻松查看所有本地更改,请使用

   git diff HEAD

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

您可以使用

git mergetool

使用 Meld、KDiff3、Gvim 等更用户友好的工具来解决冲突。

于 2011-11-26T21:59:05.770 回答
0

您混淆了未跟踪文件和未暂存文件。

  • Git 不知道未跟踪的文件,您从未git add编辑过它们(git status即将在部分中显示它们Untracked files:)。

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

告诉 git 忽略未暂存的更改是没有意义的:更改就在那里,并且它们涉及 Git 关心的文件。

于 2015-05-03T17:20:57.200 回答
0

我来到这里是因为 a 出现git revert HEAD~3了可怕的错误(因为提交历史是非线性的,并且过去几次提交中至少有一个是合并,所以 Git 不喜欢那样)。

要回到我尝试之前git revert,你所要做的就是运行这个:

git revert --abort

这将撤消您在当前 git revert 期间所做的所有还原。

于 2022-02-17T12:16:45.210 回答