解决 git checkout a 出现的问题
解决方案
今天,提交代码需要合并分支的时候,当在终端输入git checkout master
命令时,却报了如下错误:
1 | error: Your local changes to the following files would be overwritten by checkout: |
错误翻译过来就是,当前分支有未跟踪的文件,checkout 命令会覆盖它们,请缓存( stash )或者提交( commit )。
所以,针对错误提示,我们选择缓存或者提交两种方法来解决这个问题。
- stash 暂存到缓存区
1 | git add . |
- commit 发起一个 commit,存到提交历史
1 | git add . |
以上这两种方法就是针对你未跟踪文件的内容改动很重要,需要保存修改的情况。
如果说,我们之前的改动不重要,我们可以放弃修改,这时候,我们可以清除未跟踪的文件。
1 | git clean n //这个是清除文件预览 |
或者使用 git checkout -f <branch>
强制切换分支。(但是大多数情况下,我们还是不要这样操作)
原因分析
git 的本地版本管理有三个部分:
名称 | 说明 |
---|---|
工作区(Working Directory) | 直接编辑的文件部分 |
暂存区(Staged Snapshot) | 文件执行 git add . 后存的地方 |
工作区(Working Directory) | 文件执行 git commit . 后存的地方 |
它们三者之间的关系:
当我们执行 checkout 操作的时候, git 会检查工作区是否存在未跟踪文件。当我们的工作区存在未跟踪的文件时,执行 checkout 的时候会出现错误提示。