喵星软件园提供热门手机游戏下载,最新手机游戏攻略!

《战神4》PC版存档位置在哪里,

时间:2023-10-05 12:39:40 来源: 浏览:

使用Git进行游戏存档的回滚

存档错了如何处理?

接上一篇从存档的多版本推进聊聊Git分支,假设我们最终使用了cherry-pick进行了存档的合并,那现在我们得到的存档结果是这样的。

       m00      /   \     m01  m00-1     /      \    m02    m00-2             \             m00-3

但是,假设我们合并完了,发现合并错了,该怎么办呢?或者另外一个场景,我们在从m00-2存档到m00-3存档到游戏过程中,发现中途漏掉了某个蘑菇没有吃。我们想从m00-2存档重新进行游戏,把那个蘑菇给吃了,该怎么处理呢?
一种方式是忽略。我们可以重新读取m00-2的存档,从此处重新开始一个新流程。

git checkout 5eab37973211a

进行游戏后,我们启动一个新流程,并保存。这里不再赘述,请参考从游戏存档聊聊Git版本管理

git switch -c load-01git add player.txtgit commit -m 'm00-4'

此时的存档变成了这样:

       m00      /   \     m01  m00-1     /      \    m02    m00-2            / \         m00-3 m00-4

不过这个m00-3看着挺烦人的。git提供了两种方式来进行回滚操作:

  • 第一种方式是reset
  • 另外一种是revert

reset

我们一个个来演示 ,先看reset。直接执行如下命令:

git reset HEAD^ --hard

执行完成后,你就会发现存档又回到了合并前的样子了,然后你就可以继续玩游戏了。

       m00      /   \     m01  m00-1     /      \    m02    m00-2   

我们对上面的命令做一个简单的解释:

  • HEAD可以理解为一个指针,它指向了当前分支(流程)中最新的一次提交(存档)
  • 后面的^表示向前退一步,即指向前一次提交(存档)。如果要退两步,那就是HEAD^^;退三步就是HEAD^^^;如果推10步呢?可以使用HEAD~10。
  • —hard表示目录中的存档也需要变化。如果你不添加—hard,你会发现player.txt文件的内容并没有变化。你还需要再执行一下git restore player.txt

还记得快速理解Git中提到的概念模型吗?工作区、索引区和本地/远程仓库。针对不同的区域,reset支持多种模式的重置,上面的—hard就是其中之一:

  • soft:将HEAD回滚到指定的commit处,对索引和工作区没有影响。主要用于对最后一次提交的修改。比如:你commit了修改后发现这个commit里漏掉了一个文件,你可以再提交一次。也可以回滚此次提交,然后将漏掉的文件添加到索引后再次提交。
  • mixed:默认reset操作。以目前HEAD所指向的commit为基准,重置索引区,不重置工作区。举个例子:假设你修改了a.txt文件,并将其添加到索引区。如果此时执行reset,则添加索引区的操作被回滚,而a.txt文件的修改还保留。
  • hard:以目前HEAD所指向的commit为基准,重置索引区和工作区。举个例子:假设你修改了a.txt文件,并将其添加到索引区。如果此时执行reset,则添加索引区的操作被回滚,同时a.txt也被回滚到修改前的状态。

revert

除了使用reset,我们也可以使用revert来进行回滚操作。
首先我们还是先恢复到下面的存档结构(回忆一下我们是怎么操作的):

       m00      /   \     m01  m00-1     /      \    m02    m00-2             \             m00-3
恢复完之后,player.txt中的内容如下所示:        ********       ************       ####....#.     #..###.....##....     ###.......######                      ...........                       ##*#######                 1  -  3    ####*******######                 ...#***.****.*###....              ....**********##.....              ....****    *****....                ####        ####   ######        ######

我们执行如下命令进行恢复:

git revert HEAD

执行完之后,会出现一个类似下面的提示

Revert "m00-3"This reverts commit d1b1ccaedaa919e45dcf77960b19948216d86ca9.# Please enter the commit message for your changes. Lines starting# with '#' will be ignored, and an empty message aborts the commit.## On branch load-00# Changes to be committed:#       modified:   player.txt

你可以修改一下文字,也可以直接:wq退出。操作完成后,player.txt中的内容恢复为:

        ********       ************       ####....#.     #..###.....##....     ###.......######                      ...........                       ##*#######                 1  -  1    ####*******######                 ...#***.****.*###....              ....**********##.....              ....****    *****....                ####        ####   ######        ######

两者的差异

如上所示,reset和revert都可以恢复前一次的提交,那两者的差异是什么的?

  • 对于reset来说,就是对指定的提交进行了撤回。当执行了reset后,整个存档就恢复到了提交前的状态
  • 而revert并不是,它是打了一个patch,将前一次的提交进行了抵消。什么意思呢?我们执行一下git log就能比较清晰的看出差异了。
commit 45c8dc8fecffc4935d38484100d1f6b548cc35ba (HEAD -> load-00)Author: 一瑜一琂Date:   Fri Mar 18 22:49:38 2022 +0800    Revert "m00-3"    This reverts commit d1b1ccaedaa919e45dcf77960b19948216d86ca9.commit d1b1ccaedaa919e45dcf77960b19948216d86ca9Author: 一瑜一琂Date:   Fri Mar 18 22:26:40 2022 +0800    m00-3commit 5eab37973211a466cc692999b93c16561cc2a157Author: 一瑜一琂Date:   Thu Mar 17 14:19:49 2022 +0800    m00-2commit 79bd5c56e020eeb47919be29b29928e7397c1929Author: 一瑜一琂Date:   Wed Mar 16 15:46:39 2022 +0800    m00-1commit b0d5581b592f3d5faaca744e88eed604f2289904Author: 一瑜一琂Date:   Wed Mar 16 14:05:19 2022 +0800    m00```

可以发现,我们多了一个存档,就是上面显示的Revert "m00-3"。这个提交就是m00-3的逆操作,它抵消了m00-3的修改。整个存档看起来像这样:

m00

/ \

m01 m00-1

/ \

m02 m00-2

\

m00-3

\

Revert "m00-3"

为什么需要revert呢?或者revert的使用场景是什么呢?
假设你现在想抵消掉m00-1的记录,那么你就可以使用revert!此时如果你使用了reset,那么m00-2和m00-3这两个提交就都消失了。

总结

本文简单梳理了Git回滚的方式。
到目前为止,我们都只是在操作本地仓库,下面我们来聊一聊远程仓库。

标题:《战神4》PC版存档位置在哪里,
链接:https://www.miaoshengapp.cn/yxgl/128756.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
《塞尔达传说王国之泪》洛美岛解密攻略
《塞尔达传说王国之泪》洛美岛解密攻略

塞尔达传说王国之泪洛美岛解密攻略分享给大

2023-05-09
巫师3骑士风云录(巫师3骑士风云录正确解决诅咒)
巫师3骑士风云录(巫师3骑士风云录正确解决诅咒)

今天给各位分享巫师3骑士风云录的攻略,其中

2023-09-03
《艾尔登法环》游戏急速刷魂方法分享 怎么快速刷钱,
《艾尔登法环》游戏急速刷魂方法分享 怎么快速刷钱,

艾尔登法环实机上手前瞻评价!艾尔登法环到底

2023-10-04
《星露谷物语》青花鱼收获方法一览
《星露谷物语》青花鱼收获方法一览

《星露谷物语》是一款非常经典的农场经营类

2022-12-23
《艾尔登法环》新版本双持大剑怎么玩 1.04版本双持大剑配装推荐速参考,
《艾尔登法环》新版本双持大剑怎么玩 1.04版本双持大剑配装推荐速参考,

《艾尔登法环》近战远程两套角色构筑推荐推

2023-10-04
金铲铲之战龙境冒险活动怎么玩 龙境冒险活动通关攻略分享
金铲铲之战龙境冒险活动怎么玩 龙境冒险活动通关攻略分享

金铲铲之战手游刚刚为广大的玩家上线了一款

2022-12-21