此篇文章将不定期更新遇到的 git 实践中遇到的问题。
1. 使用 git checkout 切换分支时报错
错误 log 如下
error: Your local changes to the following files would be overwritten by checkout:
components/bt/controller/bt.c
examples/bluetooth/bluedroid/ble/ble_ibeacon/main/ibeacon_demo.c
Please, commit your changes or stash them before you can switch branches.
从 log 提示中,我可以归纳出以下两种解决办法:
1.通过 git stash 指令
以下是 git stash 的相关操作:
git stash
git pull
git stash pop
首先我们通过 git stash 将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就我们可以正常 git pull 了,git pull 完成后,执行 git stash pop将之前本地做的修改应用到当前工作区。
注: git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从 Git 栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个 Stash 的内容,所以用栈来管理,pop会从最近的一个 stash 中读取内容并恢复。
git stash list: 显示 Git 栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空 Git 栈。此时使用 gitg 等图形化工具会发现,原来 stash 的哪些节点都消失了。
2.直接覆盖本地修改
使用指令如下:
git reset --hard
git pull