git忘记commit

不管是上传代码,还是拉取代码,都要及时的git add .和git commit -m "xx"。

如问题二的使用stashq前也要先保存到本地仓库。

如果你pull了远程代码,或者reset --head操作,但未将工作区代码保存本地仓库,那么可能面临工作区代码被覆盖的风险。

情况1:

        如果忘记git add .和git commit -m "xx",那么如果本地代码丢失就再也找不回了。

情况2:

        做了git add .和git commit -m "xx",那么可使用reset --head回退代码版本。网上很多教程,后期再补充。

情况3:

        做了git add .但忘记git commit -m "xxx",那么可根据以下方法解决。

        参考博文:记一次找回丢失的 git add 未 git commit 的文件历程 - 简书 (jianshu.com)

        1. git fsck --lost-found 然后到 .git/lost-found 目录下找看有没有丢失的文件,对我没起到作用。

        

        2.

find .git/objects -type f | xargs ls -lt | sed 30q

         查看最近add 过的30个文件,可以根据自己大概变动的文件数设置相应的值。(注意:windows没有find命令,在git bash执行即可),会在控制台打印出如下格式的内容:

        若最近改动文件较多,可加大文件个数,如30改为500,打印结果会有时间信息,待会将时间不符的删除即可。

        可手动挨个查看,但效率太低:

        如上图第一条记录,仅保留 48 和 0c1487b9407a0287fd2a6ad5e7aa2ba597d108并拼接,其余的舍弃。双击file.txt文件即可打开查看,注意文件名不要与工程里的冲突。

git show 480c1487b9407a0287fd2a6ad5e7aa2ba597d108 >> file.txt

        

        使用ide工具配合脚本,批量处理文本文件。

        将打印信息导出到文本文件中:

find .git/objects -type f | xargs ls -lt | sed 30q > file.txt

        用ide工具(如VScode),打开file.txt文件。先将时间信息过于老旧的记录删除。再利用替换功能和正则表达式,拼接处完整可用记录码:

        手动创建一个 file.sh 脚本并执行,如下:

#!/bin/bash
dir="./files" 
if [ ! -d "$dir" ];
then 
    mkdir $dir 
fi 
for line in `cat file.txt` 
do 
    echo "File:${line}" 
    git show ${line} > $dir/${line}.txt 
done

        执行成功后,在files目录下,挨个查看txt文件。可能有的文件会是乱码或是空的或是无用信息,不用管。找到你所修改后的那个文件,把他下载到其他路径,别再丢了。

        最好是新建个目录拉个干净的工程或者直接在本工程中更改,将刚才下载的你的文件,挨个找到复制进工程,如此便可了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值