这是我所做的:
- 创建文件夹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
当然可以是任何提交。我只是根据您的示例使用了此功能。