首页 > 其他分享 >如何将Git仓库还原到之前的提交?

如何将Git仓库还原到之前的提交?

时间:2023-10-06 12:56:52浏览次数:42  
标签:git 仓库 revert 撤销 blah Git 还原 提交 checkout

内容来自 DOC https://q.houxu6.top/?s=如何将Git仓库还原到之前的提交?

如何将当前状态还原到某个提交的快照?

如果我执行git log,则我会得到以下输出:

$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <[email protected]>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <[email protected]>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <[email protected]>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <[email protected]>
Date:   Wed Nov 3 23:56:08 2010 -0400

Yep, more blah blah.

如何恢复到11月3日的提交,即提交0d1d7fc

要还原到特定的提交,请使用以下命令:

git checkout commit_id

在这种情况下,您应该输入以下内容:

git checkout 0d1d7fc32e5a947fbd92ee598033d85bfc445a50

这将使您的工作目录还原为该提交的状态。请注意,此操作是可逆的,因此如果您在还原后发现有问题,可以随时使用git checkout命令返回到之前的状态。


这取决于你所说的“还原”是什么意思。

临时切换到不同的提交

如果你想暂时回到之前的状态,玩耍一下,然后再回到原来的地方,你只需要检出所需的提交:

git checkout 0d1d7fc32

或者,如果你想在那个位置进行提交,可以在那个位置同时创建一个新的分支:

git checkout -b old-state 0d1d7fc32

要回到原来的地方,只需再次检出所在的分支。(如果你已经更改了分支,就像切换分支时一样,你需要相应地处理它们。你可以重置以丢弃它们;你可以使用储藏、检出、储藏弹出来携带它们;如果你想在那里有一个分支,你可以将它们提交到那里。)

硬删除未发布的提交

另一方面,如果你想真正摆脱自那时以来所做的一切,有两种可能性。一是,如果你没有发布这些提交中的任何一个,只需重置:

git reset --hard 0d1d7fc32

或者,如果有要保留的工作,可以执行以下操作:

git stash
git reset --hard 0d1d7fc32
git stash pop

这将保存修改,然后在重置后重新应用修补程序。

如果你搞砸了,你已经丢掉了本地的更改,但至少可以通过再次重置回到原来的位置。

用新提交撤销已发布的提交

另一方面,如果你已经发布了工作,你可能不想重置分支,因为这会有效地重写历史。在这种情况下,你可以确实撤销提交。使用Git,撤销具有非常特定的含义:创建一个提交,用相反的修补程序取消它。这样,你就不会重写任何历史。

git revert a867b4af 25eee4ca 0766c053

它还可以接受范围。这将撤销最后两个提交:

git revert HEAD~2..HEAD

同样,您可以使用提交哈希(不包括第一个哈希)撤销一系列提交:

git revert 0d1d7fc..a867b4a

撤销合并提交

git revert -m 1 <merge_commit_sha>

要获取其中一个,您可以在之后使用rebase -i压缩它们,或者手动执行(请确保在存储库的顶层执行):

git checkout 0d1d7fc32 .

然后提交。一定要写一个好的消息描述你刚刚做了什么。

git commit

git-revert手册页实际上在描述中涵盖了很多内容。另一个有用的链接是这个git-scm.com部分讨论git-revert

如果你决定最终不想撤销,可以撤销撤销(如此处所述),或重置回撤销之前(请参阅上一部分)。

在这种情况下,你可能会发现这个答案也很有帮助:How can I move HEAD back to a previous location? (Detached head) & Undo commits

标签:git,仓库,revert,撤销,blah,Git,还原,提交,checkout
From: https://www.cnblogs.com/xiaomandujia/p/17744451.html

相关文章

  • git config --global core.autocrlf input
    我们一般希望远程仓库中的代码为LF,就用: gitconfig--globalcore.autocrlfinput 就ok了。 gitconfig--globalcore.autocrlfinput这是一个Git的配置命令,它的作用是告诉Git在检出代码时不要自动将行尾转换为CRLF(Windows风格的换行符),而是保留原来的LF(Unix风格的换行符)。......
  • Gitlab upgrade paths
    UpgradepathsUpgradingacrossmultipleGitLabversionsinonegois onlypossiblebyacceptingdowntime.Ifyoudon’twantanydowntime,readhowto upgradewithzerodowntime.Foradynamicviewofexamplesofsupportedupgradepaths,trythe UpgradePa......
  • 关于 GitHub 强制要求 2FA
    GitHub要求用户在今年年底之前开启双身份验证我认为这样做虽然让账号更安全,但是很浪费时间而且我是一个初中生,很多时候手机不在身边,于是就无法登录GitHub在学校就更不可能登上GitHub了这是我的一封邮件的部分内容:Bysavingyourrecoverycodes,you’llbeabletoreg......
  • 小白之git基础(window版)
    (1)官网下载window版git,网址:https://gitforwindows.org/ (2)安装git,并创建名字为first的java项目 (3)打开opengitbashhere (4)创建远程仓库,我用的是gitee代码托管平台 (5)进入E盘下first目录,再进入src目录下,找到HelloWorld.java文件 (6)初始化创建本地仓库,并跟踪HelloWorld.......
  • Maven05-maven仓库和nexus
    坐标和依赖是任何一个构件在Maven世界中的逻辑表示方式。而构件的物理表示方式是文件,Maven通过仓库来统一管理这些文件。1##......
  • 本地仓库通过git上传到gitee远程仓库
    1.本地新建vue3项目(vue-cli)2.gitee上新建远程仓库2.1.只选master一个分支2.2.新建的gitee远程仓库生成两个文件远程:2.3.把远程仓库的这两个文件下载并复制到本地项目文件中本地:tips:此时,gitee远程仓库里的文件被手动同步到了本地仓库项目文件夹中3.用命令行把本地仓......
  • Git解决 fatal: refusing to merge unrelated histories
    一、fatal:refusingtomergeunrelatedhistories新建了一个本地仓库之后,把本地仓库和远程仓库进行关联提交、拉取的时候,出现了如下错误:二、解决方案在你的操作命令后面加--allow-unrelated-histories例如:$gitpulloriginmaster--allow-unrelated-historie......
  • 掌握全局,捕捉瞬间:Snagit2023-专业屏幕录制与截图软件
    Snagit2023是一款功能强大的屏幕录制与截图软件,为您带来全新的视觉体验和高效的屏幕操作。无论您需要记录屏幕操作、制作教程视频,还是与他人分享屏幕内容,Snagit2023都能满足您的需求。→→↓↓载Snagit2023mac版一、高清屏幕录制,流畅捕捉每一个细节Snagit2023支持高清无损的......
  • Git 代码上传和下载
    设置问用户名和邮箱后使用以下命令,下载线上代码gitclone[代码URL]上传代码gitadd-Agitcommit-m[文件名称]gitpush-uoriginmaster ......
  • Git 设置用户名和邮箱
    1.用户名和邮箱的作用用户名和邮箱地址是本地Git客户端的一个变量,用户每次提交代码都会记录用户名和邮箱。安装好Git后,打开GitbashHere,在命令框中,输入以下命令2.设置用户名3.设置邮箱 4.查看用户名和邮箱 ......