如何在不恐慌的情况下还原你的git提交


第1步:深呼吸

克服你的代码库/世界正在崩盘的不断升级的恐惧的最佳方法是深呼吸。在疯狂地飞向键盘之前,只需从鼻子进入……然后通过嘴巴进入。

第2步:查看提交日志

在做任何你可能会后悔的事情之前,最好仔细查看所有最近提交的内容,以确定你要恢复的位置。最干净的方法是使用:

git log - 一条线 

这将显示您的分支的所有提交历史记录,从最新的开始。它还显示分支点以查看已合并的所有内容的历史记录。

另请注意每次提交左侧的字母数字字符串。这些是唯一标识给定提交的哈希值。找到代码爆炸的拐点后,复制该提交的哈希值并继续下一步。

注意:您可以通过点击“q”键退出此日志。这非常非常,所以如果你被困在这里我不会责备你?

第3步:针对最近的提交进行区分

检查与恢复点的差异是验证您将要进行的更改的好方法。为此,请使用复制的哈希并运行以下命令:

git diff HEAD COPIED_HASH 

让我们打破这个输出。首先,我们看到所有二进制文件的日志都已更改,路径列为 A / FILE_P新高B / FILE_P新高。这些文件通常是编辑器/构建特定文件(如 .vscode 要么 .circleci 目录)和图像文件。在这种情况下,更新了一些图像的分辨率。

接下来,我们看到从每个修改过的文件中添加和删除的行的逐行细分。请注意,这是从我们最近的提交更改为我们要恢复的提交的角度。因此,绿色的所有内容都将在恢复后添加,并且所有红色的内容都将被删除。

如果您滚动浏览此内容并且一切看起来都很好,那么就该删除这些提交了

步骤4选项1:运行提交还原(推荐)

第一个选项是最明显的选择:运行 还原 命令到我们要恢复的提交哈希。这非常简单:

git revert COPIED_COMMIT_HASH 

请注意,这样做会创建一个新的提交,旨在将所有更改还原到指定的提交。这很有效,因为您应该能够按预期推送更改并拥有干净的更改日志。但是,您可能希望完全更改提交历史记录,以便看起来那些讨厌的提交从未出现过。为此,还有第二个选择……

选项2:重新启动和删除提交

注意:在使用此选项之前,请阅读本节末尾的免责声明。

您可以使用rebase直接修改提交历史记录,而不是进行还原提交。要启动该过程,请键入以下内容:

git rebase -一世 COPIED_COMMIT_HASH 

请注意 -一世 在这里举旗这是一个简写 - 互动,它允许您从头部到我们指定的提交哈希单独编辑每个提交。

从这里删除我们提交的所有提交都很简单。注释中的指令实际上是可见的,但是作为TLDR:对于列出的所有提交,用“drop”替换每个“pick”。

…如果您不知道为什么删除键不起作用,那是因为git使用vi作为默认编辑器。你可以到这里转换到你最喜欢的编辑器进行这个过程,但是如果你很好地坚持使用vi,那应该不会太困难。

  • 要开始编辑,请按“i”键并使用箭头键移动光标
  • 将光标移动到每个“选择”语句,删除,并将其替换为“drop”
  • 一旦所有选秀权被替换,点击“esc”
  • 要确认rebase,请键入“:wq”。这将保存您刚刚编辑的rebase文件

如果要随时中止,请删除注释部分上方列出的所有行(以“#”开头的那些行)以强制使用rebase错误输出。如果你正在使用vi,只需重复混合“d”直到线条消失?

如果终端窗口关闭或发生其他情况,则rebase将挂起未完成。要中止rebase并重新开始,请输入命令 git rebase --abort

如果一切顺利,您将正式改变历史

放弃

如果您已经将现在已恢复的提交推送到远程分支,则修改git历史记录可能会出现问题。恢复后,您的分支将显示在遥控器后面,因此您无法再直接推送。在这种情况下,您将不得不运行 git push --force-with-lease。此标志将通过删除丢弃的提交将您的历史记录强制转移到远程。 与租赁 作为错误检查,以确保您的其余提交与遥控器一致。

您可能听说过使用过 - 力 推送不是最佳实践,因为它涉及重写远程的提交历史记录。对于在同一分支机构工作的其他人来说,这可能是一个问题,因为他们的历史将不再与遥控器对齐。有办法解决这个问题,但要确保其他人在遇到麻烦之前意识到你的力量推动

总结

希望在此结束时,您的分支机构重回正轨主要是,在修改提交时总是要确定要运行的命令,尤其是直接编辑git历史记录时。对于初学者和专家来说,这可能是一项非常艰巨的任务,因此确保差异并查看提交日志是必须的

我实际上是在为我的工作完成相同的过程之后写了这篇文章,想要给我的书面笔记一些清晰。希望这有助于其他人陷入同一条船?

谢谢阅读

我是一个前端的webdev,设计师总是在修补一些东西。我刚刚为我的投资组合提供了一个闪亮的“点开发”网址,所以我要去那里参加我所有的社交活动,还有更多关于我的开发之旅

?https://bholmes.dev

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/bholmesdev/how-to-revert-your-git-commits-without-panicking-4d1c ,版权归作者所有,未经许可,不得转载
你可能还喜欢