Git 中的后悔药

处理生活中需要代码撤回的场景:

  1. 工作区中的代码想撤回(没有提交过的) git checkout -- <file>
  2. add 到暂存区的代码想撤回。 git reset HEAD
  3. 提交到本地仓库的代码想撤回。 git reset --soft <版本号>。也可以修改soft为Hard放弃版本后的所有修改。
  4. 远程提交的代码想撤回。在本地修改完之后,使用命令 git push origin <分支名> --force

版本号的写法,有很多种。 1. HEAD表示撤回到上一个,HEAD^ 表示上上一个,依次类推。2. 用数字代替,比如撤回到上100个,HEAD~100。3. 使用指定的版本号(hash码),太长写前面几个字符就可以。

状况1:本地代码提交,我想撤回修改,再提交?我的操作,直接运行了 git reset HEAD,然后我发现我确实撤回到了上个版本状态,但是我的修改全都丢失了(真的丢失了嘛?)

很重要的一个概念:不管是用什麼模式進行 Reset,Commit 就是 Commit,並不會因為你 Reset 它然後就馬上消失了

  1. git log --online: 按行显示提交的日志信息(不会显示Reset等提交信息)
  2. git reflog: 更加详细的指示每次变更的修订记录

解决思路:使用 git reflog 命令找到想撤回的状态的hash值,然后在使用 git reset hashvalue --hard--hard 强迫放弃所有 reset 之后的修改。

修改 commit 信息

只是修改最近一次的commit 信息

git commit --amend

参考资料

  1. Git中的各种后悔药 - 个人文章 - SegmentFault 思否
  2. 【狀況題】不小心使用 hard 模式 Reset 了某個 Commit,救得回來嗎? - 為你自己學 Git | 高見龍
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值