参考博客
-
Git出现冲突error: Your local changes to the following files would be overwritten by merge: xxx/...
-
error: Your local changes to the following files would be overwritten by merge:
一、问题发生背景
今天尹老大在git上更新了一些代码,我需要和他同步,然后我进入自己的git文件,直接git pull,然后出现了报错,大概报错如下(粘贴别人的):
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.
二、git报错原因
原因:当前分支有未跟踪的文件,checkout 命令会覆盖它们,请缓存(stash)或者提交(commit)。
三、解决办法
选择A:未跟踪文件的内容改动很重要,保存修改
两种方法:按照信息提示,分别是:缓存(stash)或者提交(commit)
- 方法1:把当前任务暂存起来,再获取远端的最新文件,然后合并,代码如下:
git stash //暂存正在进行的工作
git pull
git stash pop //合并暂存的代码
- 方法2:发起一个commit 存到提交历史
git add.
git commit -m 'commit message'
选择B:未跟踪文件的内容改动不重要,放弃修改
两种方法:①清除修改;②强制分支切换
- 方法1:清除未跟踪文件【推荐做法】
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
- 方法2:强制分支切换
强制切换分支命令如下,结果同提示说的那样,会直接覆盖未跟踪的文件。
这个方式很粗暴,我们日常切换的时候,还是尽量不要使用 -f 强制切换,因为没有覆盖提示,很容易发生文件修改丢失,但是我们自己不知道。
git checkout -f <branch> // <branch>为要切换到的分支名,注意不带“<>”
效果
D:\Android\***\*****>git checkout -f master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
网友评论