我无法在文件发生冲突时还原文件。吉特



这是我所做的:

  • 创建文件夹testa
  • 用它的内容创建一个文件" a.txt"
  • git init到文件夹testa
  • git add。
  • git commit -a -m" first"
  • 将文件的" a.txt"内容更改为" b"
  • git add。
  • git commit -a -m"更改为b"
  • git日志(获取"第一个"的提交ID)
  • git还原A90DEAFE08C9F8F0D7B94D3D74D40BE2BD65B161

我进入控制台:

error: could not revert a90deaf... first
hint: after resolving the conflicts, mark the
hint: with 'git add <paths>' or 'git rm <paths
hint: and commit the result with 'git commit'

好吧,我想在上一个提交的状态下所有文件,我应该知道什么?

更新我想要什么:

  • 我想保持"更改为b"提交,并拥有与"第一个"提交完全相同的第三个提交。我从不想丢失任何文件。
  • 使用二进制文件(请参阅下一点)
  • 我不在乎二进制文件的管理方式,只要我可以在提交状态下将它们设置为它们,因此在这种情况下不需要合并。我只想要一些更容易的事:替换coltion x的文件a以提交y,无需合并并发症。

首先,以:

回到良好状态
git revert --abort

接下来,看看您要问什么。git revert获取您要撤消的提交的提交ID。第一个提交将a.txt设置为:

a

第二个提交使其具有:

b

您想恢复第一个提交。因此,这就是您要删除a行的添加,以及添加文件是冲突。第一个提交添加了文件,第二个提交对其进行了修改。因此,git现在不知道要删除它该怎么办。

我假设您想回到 a.txt中有 a的状态。

有几种方法可以回到先前的状态。如果未共享提交,则可以简单地使用git reset

git reset --hard HEAD~1

这说"将我的工作副本的状态和索引的状态重置为上一个提交"。此时, a.txt中的 a

如果您共享了第二项提交,那么您不想执行上述,因为您将重写历史记录,这会导致许多其他问题。取而代之的是,像您试图做的那样,将提交还原,但要使用正确的提交。在这种情况下,这是您要恢复的头脑:

git revert HEAD

有时候,恢复提交可能会发生冲突。在这种情况下,这非常像合并冲突。您需要通过它们进行工作,修复冲突,然后使用git add进行修改,或使用git rm删除文件。完成后,git revert --continue将完成该过程。

更新

恢复先前状态的最简单方法,而无需进行任何花哨的合并,是使用git checkout。您可以做:

git checkout HEAD~1 -- a.txt
git commit -m "Reverted to the previous version."

没有合并,没有大惊小怪。:-) HEAD~1当然可以是任何提交。我只是根据您的示例使用了此功能。

最新更新