zoukankan      html  css  js  c++  java
  • 【转载】当git仓库checkout出现文件消失的处理方法

    原文地址:当git仓库checkout出现文件消失的处理方法,作者:Tekkaman Ninja

    今天复制了一个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!

  • 相关阅读:
    在asyncio 中跳出正在执行的task
    运行代码框代码
    GridView单击行
    J2ME 使用HTTP网络连接实现排行榜
    Oxite的配置
    如何使用vs2005自带的sql2005
    点击右键出现导航菜单效果
    J2ME播放声音CODE
    将行为层和结构层分离 Html文档
    图片横向无缝滚动
  • 原文地址:https://www.cnblogs.com/haig/p/6400046.html
Copyright © 2011-2022 走看看