当git仓库checkout出现文件消失的处理方法


今天复制了一个Linux内核的git仓库,直接将.git文件夹放在了一个文件夹中,然后执行了git checkout ***, 检出了一个tag中的代码快照。但是怪事发生了,出现了一大堆类似“D    usr/Makefile”。让后我看了下工作目录,里面只有几个文件夹,也就是只检出了一部分文件。这时我用“git status”一看,出现一堆类似“# deleted:    usr/Makefile”的信息: 

# On branch ******
# Changes not staged for commit:
# (use "git add/rm ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# deleted: usr/Makefile
......
#
no changes added to commit (use "git add" and/or "git commit -a")


从这些情况上来看,当前应该类似“checkout后又人为删除了一大堆文件,并没有暂存一样”,但是为什么会这样,暂时搞不明白。这种情况我的一个同事也遇到过,当时以为是他拷贝的仓库有问题,或者文件系统的问题,没有仔细弄。现在有碰到这个问题,看来就不能这么解释了,首先仓库是我用tar打包的,并且来源都是EXT3文件系统。原因搞不明白,但是可以解决这个问题。有两种方法(命令)可以解决: 
1、使用reset命令
         git reset --hard
     运行结果类似:
        tekkaman@Super-MAGI:~/development/Ti/linux-omap3$ git reset --hard
        Checking out files: 100% (35462/35462), done.
        HEAD is now at ****

     这么一来所有文件都出来了。 
     对于这条命令的解释就是:
        --hard
        Resets the index and working tree. Any changes to tracked files in the working tree since are discarded.

复位暂存文件和工作目录树。工作目录树中任何已跟踪文件从上个点的改变都会被丢弃。
2、使用stash命令
       git stash
   这么一来所有文件都出来了,之后你再删除这个stash就好了。这个方法比较蹩脚,但是It works!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值