当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!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: git checkout命令是Git中一个非常常用的命令,它主要用于切换分支或恢复文件。 切换分支是git checkout命令的最常见用法之一。我们可以使用git checkout <branch-name>命令来切换到指定的分支。例如,我要切换到名为“dev”的分支,只需执行git checkout dev命令即可。 除了切换分支,git checkout命令还可以用于创建新分支。通过git checkout -b <branch-name>命令,我们可以同时创建并切换到一个新的分支。例如,我要创建一个名为“feature”的新分支,只需执行git checkout -b feature命令即可。 此外,git checkout命令还可以用于恢复文件。如果我们在工作区对某个文件进行了修改,但后来发现修改有误,可以通过git checkout <file-name>命令来恢复文件到最近一次的提交状态。例如,我要恢复“index.html”文件的修改,只需执行git checkout index.html命令即可。 需要注意的是,当我们使用git checkout命令切换分支或恢复文件时,Git会将当前分支或文件的内容替换为切换到的分支或恢复的文件的内容。因此,在执行这些操作之前,最好先保存一份当前分支或文件的备份。 综上所述,git checkout命令是Git中一个非常重要的命令,它可以用于切换分支、创建新分支和恢复文件等操作。熟练掌握git checkout命令的使用方法,对于Git版本控制的使用和工作流程起到关键作用。 ### 回答2: Git checkout命令是Git版本控制系统中的一个常用命令,可以用来切换分支、创建分支和恢复文件。下面对Git checkout命令进行详解。 1. 切换分支:使用git checkout命令可以快速在不同分支之间切换。例如,使用命令git checkout branch_name可以切换到指定的分支,将当前工作目录切换到该分支上。 2. 创建分支:可以使用git checkout命令来创建分支。例如,使用命令git checkout -b new_branch_name可以创建一个新的分支,并切换到该分支上。这个命令相当于先使用git branch命令创建新分支,再使用git checkout命令切换到新分支。 3. 恢复文件Git checkout命令还可以用于恢复文件。如果文件在工作目录中的更改还没有提交到版本库,那么可以使用git checkout命令将文件恢复到最近一次提交的状态。例如,使用命令git checkout -- file_name可以将指定的文件恢复到最近一次提交的状态。 此外,git checkout命令还可以用于切换到特定的提交或标签。例如,使用命令git checkout commit_id可以将工作目录切换到指定的提交,使用命令git checkout tag_name可以将工作目录切换到指定的标签。 需要注意的是,git checkout命令在切换分支或恢复文件时,会将当前工作目录的更改丢弃。因此,在进行操作前应该确保已经保存或提交了当前工作目录的更改。 总之,git checkout命令是Git版本控制系统中一个功能强大且常用的命令,可以帮助开发者在不同分支之间切换、创建分支和恢复文件。使用git checkout命令可以轻松管理和控制项目的版本。 ### 回答3: git checkout命令是Git版本控制系统中的一个命令,用于切换分支、拉取远程分支、还原文件等操作。 1. 切换分支:使用git checkout命令可以在不同的分支之间进行切换。在命令行中输入git checkout <branch_name>,即可切换到指定的分支。 2. 创建分支并切换:git checkout命令也可以用于创建分支并立即切换到该分支。输入git checkout -b <branch_name>,即可创建一个名为<branch_name>的分支,并立即切换到该分支。 3. 拉取远程分支:使用git checkout命令可以拉取远程仓库的分支并在本地创建对应的分支。输入git checkout -b <branch_name> origin/<branch_name>,即可从远程仓库中拉取<branch_name>分支并在本地创建对应的分支。 4. 还原文件git checkout命令还可以用于还原文件的修改。输入git checkout <file_name>,即可将<file_name>文件恢复到最近一次提交的版本。 需要注意的是,使用git checkout命令会改变当前工作目录和文件状态,应谨慎操作。如果有未提交的修改或者当前工作目录有冲突文件,切换分支可能会导致这些修改的丢失或冲突的产生。在切换分支之前,应先提交或保存当前的修改。 总而言之,git checkout命令是Git版本控制系统中一个重要的命令,可以实现分支切换、创建与拉取分支以及文件还原等功能。使用该命令时应谨慎操作,确保没有未提交的修改或冲突文件,以免导致数据丢失或冲突。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值