【Git-error】Your local changes to the following files would be overwritten by checkout

4 篇文章 0 订阅

问题描述

使用git checkout命令切换分支时由于当前分支有未跟踪的文件,导致切换失败。

D:\Android\***\*****>git checkout master
error: Your local changes to the following files would be overwritten by checkout:
        app/build.gradle
Please commit your changes or stash them before you switch branches.
Aborting

提示信息写的比较清楚:
当前分支有未跟踪的文件,checkout 命令会覆盖它们,请缓存(stash)或者提交(commit)。

 

解决方案

有两种选择:A保存修改;B放弃修改

选择A:未跟踪文件的内容改动很重要,保存修改

两种方法:按照信息提示,分别是:缓存(stash)或者提交(commit)

方法①:存到暂存区

git add .
git stash 
// 取出的时候使用 
git stash pop

方法②:发起一个commit 存到提交历史

git add .
git commit -m "commit message"

 

选择B:未跟踪文件的内容改动不重要,放弃修改

两种方法:①清除修改;②强制分支切换

方法①:清除未跟踪文件【推荐做法】

git clean -n         //这个是清除文件预览
git clean -f         //强制清除文件

效果:

D:\Android\***\*****>git clean -n
Would rempve app/build.gradle
D:\Android\***\*****>git clean -f
Removing app/build.gradle

 

方法②:强制分支切换

git checkout -f <branch>        // <branch>为要切换到的分支名,注意不带“<>”

效果

D:\Android\***\*****>git checkout -f master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

 

原因分析

git 的本地版本管理有三个部分:

名称说明
工作区(Working Directory)直接编辑的文件部分
暂存区(Staged Snapshot)文件执行 git add . 后存的地方
版本库区(Commit History)文件执行 git commit . 后存的地方

三者之间的关系:

当我们执行 checkout 的时候,git会检查工作区是否存在未跟踪文件,也是上述出错的原因。

 

【原文地址】https://blog.csdn.net/qq_32452623/article/details/75645578

  • 15
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值