git pull --rebase丢文件丢失修改了怎么办

当多人开发的时候,你本地修改git commit 了多次,这些git commit就会和其他开发人员的commit混在一起,很难看清哪些commit才是一次完整的内容。

这时用git pull --rebase就很好,能将你的所有修改集中在一起。

但是多次使用这个功能后,发现,很容易发生丢文件或者丢数据的问题,怎么办,吓死人啊。


解决方案:

在当前git工程的目录下,打开.git/logs/HEAD文件,这里会保存一段时间内你的提交记录,找到你所熟悉的,git pull --rebase之前的一次提交的记录

217 013fb7cb8995dce32251b1949cfcc5e8c0df6635 d10d39b2bed6d0916cad6f76267fac336183398e x'x <xx@xx.com> 1460428760 +0800  commit: 修改单测
218 d10d39b2bed6d0916cad6f76267fac336183398e 82e12e76d8be323adda0a56b2e1c432d828c924d xx <rxx@xx.com> 1460428780 +0800  pull --rebase: checkout 82e12e76d8be323a

这里可以看出来,git pull --rebase之前的一次commit后的ID:d10d39b2bed6d0916cad6f76267fac336183398e

git branch new //新开一个分支,

git checkout new//跳到这个分支;

git reset --hard d10d39b2bed6d0916cad6f76267fac336183398e  //reset到这个commit点; 观察一下你的代码是不是已经是你想要的结果了, 如果是的,就可以去master分支上执行git reset操作。如果不是,尝试git reset到其他commitID所在点,知道确定哪个commitID是你要的。git reset过去;


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
git pullgit rebase都是用于将远程仓库的更新同步到本地仓库的命令,它们的区别在于更新本地仓库的方式不同。 - git pull命令会将远程仓库的更新拉取到本地仓库,并将本地仓库的HEAD指针指向最新的提交。如果本地仓库和远程仓库都有修改git pull命令会使用merge算法将两者合并。这种方式会在本地仓库中生成一个新的合并提交,保留了两个分支的修改历史,但是会使得提交历史变得复杂。 - git rebase命令也会将远程仓库的更新拉取到本地仓库,但是它会将本地仓库当前分支的修改“变基”到远程仓库的最新提交之上。这种方式会使得提交历史变得更加线性,但是会丢失本地仓库的修改历史。如果本地仓库和远程仓库都有修改git rebase命令会将本地仓库的修改暂存起来,将本地仓库的HEAD指针指向远程仓库的最新提交,然后再将暂存的修改应用到新的基础之上。 下面是两个例子: - git pull的例子: ```shell git pull origin master ``` 这个命令会将远程仓库origin的master分支的更新拉取到本地仓库,并使用merge算法将本地仓库的修改和远程仓库的更新合并。 - git rebase的例子: ```shell git fetch origin git rebase origin/master ``` 这个命令会将远程仓库origin的master分支的更新拉取到本地仓库,并将本地仓库当前分支的修改“变基”到远程仓库的最新提交之上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值