[git]版本回退,手残党专用

以前觉得版本回退这东西应该没什么用,毕竟你新commit的版本肯定要比旧版本优化。

但是实际上比如有时候更改需求,旧版本反而更优。

参考了廖雪峰的博客,学习了怎么进行版本回退

————————————————————————————————————————————————————

下面是我平时在使用git(eclipse管理仓库,github博客管理)中遇到过的问题,在网上找到的解决方案(部分内容参考自知乎)


我犯了严重的错误,Git魔法怎么让我回到过去

git reflog
# 你会看到你过去在所有分支上做的所有事情!
# 每一个动作都有一个目录编号:HEAD@{index}
# 找到你犯错之前的那条记录
git reset HEAD@{index}
# 这就是黑魔法,你已经回到犯错之前了

你可以用这个恢复误删的文件,或者,你做了一些修改,结果事情搞得一团糟,你可以秒回之前的状态。如果你做了一次不爽的合并(merge),也可以这样反悔,总之你能瞬间回到事情都还OK的时候。我经常用reflog, 多亏了很多很多很多很多人强烈要求,Git才有了这个功能,向他们致敬一百万次!



 我提交了,但想要做一个小修改

# 没问题,你直接先修改好,然后:
git add .    # 或添加特定文件
git commit --amend
# 在出现的窗口里,编辑提交说明,或者维持不变
# 现在你最新的提交里已经包含了这个小修改

这种事经常发生,当我提交后,再进行测试或格式检查时,日了狗了(Fuck my life),我在一个等号后面少了一个空格⊙﹏⊙b...其实你也可以把小修改当作一次新的提交,然后用rebase -i把它们合到一块儿,但上面的方法要快一百万倍。



提交说明写错了,怎么修改?

git commit --amend
# 在出现的窗口里编辑提交说明

Git愚蠢的提交说明格式要求。



应该提交给新分支的东西,提交给了主分支

# 从当前状态的主分支上新建一个分支
git branch the-new-branch-name
# 取消主分支上最新的一次提交
git reset HEAD~ --hard
git checkout the-new-branch-name
# 好了,你的提交现在就只在这个新分支上

注意:如果你已经推送到了远程分支,那一切都晚了。无尽的忧桑...另外,如果你已经胡乱做了其他事情,那第二行应该是git reset HEAD@{number},而不是HEAD~,以回到最初犯错的时间和地点。很多很多人推荐了这个简单的方法,感谢你们!



提交到了错误的分支

# 取消最新的提交,然后保留现场原状
git reset HEAD~ --soft
git stash
# 切换到正确的分支
git checkout name-of-the-correct-branch
git stash pop
git add .    # 或添加特定文件
git commit -m "你的提交说明"
# 现在你已经提交到正确的分支上了

遇到这种情况,很多人会说用cherry-pick(摘樱桃),像下面这样。不过你自己看吧,哪个舒服用哪个。

git checkout name-of-the-correct-branch
# 把主分支上的最新提交摘过来,嘻嘻~~
git cherry-pick master
# 再删掉主分支上的最新提交
git checkout master
git reset HEAD~ --hard


all




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值