git恢复以往仓库状态(git reflog、git cherry-pick)

在程序开发的过程中我们难免有搞错的时候。在项目中,如果因为我们个人的操作不当把整个代码仓库毁了就不好了,好在git的开发人员为我们想到了这一点,可以使用后悔药操作来将代码恢复

1. git log

git log 命令可以显示所有提交过的版本信息,也就是每个commit的信息。比较单一
然后也可以使用git diff来查看commit之间的 差异

git diff commit-id1 commit-id2

2. git reflog

git reflog顾名思义就是查看ref变化的log,而引起ref变化的操作有

git checkout branchName ( 切换分支 ) :moving from branch1 to branch2
git commit ( 提交 )
git reset commit (重置)
git checkout commit (签出某一个提交)
git merge (合并操作)
git pull (相当于 fetch + merge )
git pull : Fast-forward ( 没有冲突,快速前进)
git rebase (褊急)
git pull --rebase ( 相当于fetch + rebase )
git clone ( 初始化ref 

也即所有基本操作都会引起ref的变化。换句话说git reflog可以查看我们以往仓库的几乎所有状态

在这里插入图片描述
进而我们可以利用ref-id(图中黄字) 来找回删除的commits

git reflog
git checkout <reflog-Id>
git checkout -b <newBranchName>

也可以回到以往的任何状态

git reset --hard  ref-i

回到以往状态后,推送到远端

git push origin HEAD --force

这样就把仓库恢复了

3. git cherry-pick

//TODO

此时,我们又想保留新commit的代码,怎么办呢?
这个时候就用上了git cherry-pick,刚刚我们回到了旧版本最新,现在我们想加上新commit,操作如下

git cherry-pick `新commit的hash码`

git cherry-pick可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了。

参考

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值