git 问题 - commit 自动脱离

git 问题 - commit 自动脱离
1.在a分支,提交commit 01。
2.签出到b分支,把a合并过来。
3.签出到a分支,查看b的历史记录,
关键来了:在a分支,查看b的历史记录,
然后,(重点)在b的历史记录界面,删除commit 01
发现:!!!!!
b的提交记录没变化,因为没有签出到b分支,无法对b分支进行任何更改!
但是:a分支的commit 01,不见了……………………


总结:vs2017的误区。
其实不是bug
1.在b的历史记录删除commit 01,其实真正的操作是:在当前分支,删除commit 01(根据哈希值来操作的)
2.所以,如果在b的历史记录删除一个a分支没有的commit ,是失败的。

刚刚测试了一下…………真神奇,分支b的新commit不但没删掉,反而出现在了a分支……

总结:绝对不要不要在visual studio 2017中, git 的历史记录里,非当前分支下,进行任何删除操作。


如果不小心删掉了,那么丢失的 commit ,其实是还在的,只不过已经不存在于任何分支里了。

那么如何找回来?
如果有这个commit的哈希值,那好办,直接

git branch 新分支名字 哈希值

就根据该哈希值,创建了一个分支,然后你再合并回去就行了。
(参考:打一个标记,从标记签出,修改,提交。那么此提交就是不绑定任何分支的commit了。)

如果没有这个commit的哈希值…………我目前也没办法了……


抢救性方法:打开.git / logs / HEAD 文件,里面保存有 HEAD 指针记录,如果你的某个 COMMIT 还在,那就复制哈希值,然后

git branch newBranchName HashValue

就行啦~~ 美滋滋
注意:这个文件是本地的,并不会上传到 git 的托管服务器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值