gpt4 book ai didi

Git 还原所有匹配模式的行

转载 作者:行者123 更新时间:2023-12-05 02:18:10 25 4
gpt4 key购买 nike

enter image description here

我错误地替换了我的文档中所有被 Git 跟踪的行。我以前做过一些工作,但忘记在做之前作为检查点提交,所以恢复是不可取的,因为它会恢复我的所有工作。我只想使用 Git 的帮助恢复替换所有操作。

我知道我需要还原的所有行,因为它们都有相同的新行。从 SourceTree 之类的 GUI 工具中,我可以一个一个地单击 Discard Hunk,但是有很多这样的位置我想丢弃。我想还原的所有地方都有新行说

m_Sprite:{文件 ID:21300164,guid:791de2a5646d94a15a09bb1d7e79a0e6,类型:3}

但旧行不一定相同。 (事实上​​,我将两种旧行更改为相同的新行)是否有任何脚本方式来匹配已更改行的模式,以便我可以有选择地将它们全部还原?谢谢。

使用 git add -p 交互地添加除了我不想继续的大块头之外的所有东西是非常乏味的,因为它会一个一个地询问你但是有太多的作品要添加并且在同时,几乎每个文件中都混杂着我不想要的帅哥。 (所以我必须非常小心 git 提出的每个问题)git checkout -p 也是如此,以删除我不想倒退的帅哥。

最佳答案

好的,我设法使用补丁解决了这个问题。

首先,我将这个困惑的状态提交为检查点。然后我可以使用

git diff --binary HEAD^ HEAD > ~/Desktop/patch.diff

请注意,先前的提交在命令中排在第一位。

将补丁保存在某处后,我重设到之前的提交和 git clean -f。现在,如果我 git apply patch.diff 我会到达相同的点(但仍然保持对先前提交的关注)我的想法是在应用之前直接编辑补丁。

补丁由大块组成,所以要禁用我不希望的某个大块,方法是用与前面的 - 相同的内容替换 + 行> 一个。我可以在 VSCode 中使用正则表达式搜索来搜索带有 \n 的多行(不要忘记将 + 字符转义为 \+ 所以它不算作正则表达式)并将它们全部替换。

这种方法比删除 hunk 更好,因为没有机会破坏补丁的格式。补丁不知道是不是改成同一条线,什么都不做。

enter image description here

编辑补丁并应用后,我得到了所有更改,减去了我们之前编辑的大块内容。所以它等于“恢复所有我不想要的帅哥”的 Action 。

关于Git 还原所有匹配模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46216040/

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