【问题标题】:Git Revert Error Message?Git 还原错误信息?
【发布时间】:2012-01-07 02:00:03
【问题描述】:

在尝试恢复我对 .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 临时文件等。

【问题讨论】:

  • Git 告诉你该怎么做:解决冲突
  • git status 会告诉你。

标签: git git-revert


【解决方案1】:

问。什么冲突?

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

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

   git diff HEAD

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

你可以使用

git mergetool

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 1970-01-01
      • 2021-08-12
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 2015-12-04
      • 2017-03-16
      相关资源
      最近更新 更多