gpt4 book ai didi

git - 我无法在冲突时恢复文件。混帐

转载 作者:太空狗 更新时间:2023-10-29 13:17:05 29 4
gpt4 key购买 nike

这是我所做的:

  • 创建文件夹testA
  • 创建一个文件“a.txt”,内容为“a”
  • Git 初始化到文件夹 testA
  • git 添加。
  • git commit -a -m "第一个"
  • 将文件的“a.txt”内容更改为“b”
  • git 添加。
  • git commit -a -m "改为b"
  • git log(获取“第一个”的提交 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”提交,并有第三个与“第一个”提交完全相同的提交。我永远不想丢失任何文件。
  • 使用二进制文件(见下一点)
  • 我不关心二进制文件是如何管理的,只要它们处于提交状态即可,因此在这种情况下不需要 merge 。我只想要更简单的东西:将文件 A 从提交 X 替换为提交 Y,不需要 merge 复杂化。

最佳答案

首先,通过以下方式恢复良好状态:

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

如果您共享了第二次提交,那么您不想执行上述操作,因为您将重写历史,这会导致一大堆其他问题。相反,恢复提交,就像您在上面尝试做的那样,但使​​用正确的提交。在这种情况下,这是您要还原的 HEAD 提交:

git revert HEAD

有时还原提交可能会发生冲突。在那种情况下,它非常像 merge 冲突。您需要解决这些问题,解决冲突,然后使用 git add 暂存修改后的文件,或者使用 git rm 删除文件。完成后,git revert --continue 会让进程结束。

更新

无需进行任何花哨的 merge 即可恢复先前状态的最简单方法是使用 git checkout。你可以这样做:

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

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

关于git - 我无法在冲突时恢复文件。混帐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008170/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com