git pull
Updating f6cb070ae2b…a3f83d32c72
error: Your local changes to the following files would be overwritten by merge:
Please move or remove them before you merge.
Git 报错是因为它检测到服务器上有更新,但你的本地有未提交的改动,且文件名发生了冲突。
按照以下步骤操作,可以完美解决并同步代码:
第一步:保存你的代码更改
对于那两个strings.xml文件,因为你确认本地是最新且正确的,所以直接提交它们:
# 1. 将你需要保留的 strings.xml 添加到暂存区# 2. 提交到本地仓库 (或者你可以写一个暂时的 commit)gitcommit-m"Save local strings.xml updates before pull"第二步:处理不需要上传的脚本文件
对于 你不想上传它们,但又不想丢失本地修改。根据刚才的建议,使用assume-unchanged来“隐藏”它们:
git update-index --assume-unchanged Version.sh
第三步:处理 untracked 文件
报错提示 正在阻塞合并。既然你已经把它复制备份到~/目录了,那么直接删掉工作区的这个文件即可:
rmlunch第四步:执行 Git Pull
现在你的本地工作区已经干净(或已隐藏了冲突),可以顺利执行git pull了:
gitpull操作后的检查与处理:
如果
git pull顺利完成:- 你的
strings.xml已经被合并到了最新的代码树中。 - 你的脚本文件(
.sh)因为开启了assume-unchanged,git 不会去碰它们,保持了你本地修改的版本。
- 你的
如果以后想恢复脚本文件的提交权限:
如果你以后某天想修改这些脚本并提交到服务器,记得先恢复它们:
git update-index --no-assume-unchanged file1
git update-index --no-assume-unchanged file2
总结:git add->git commit是 Git 处理冲突最标准的方法。只要你把改动 commit 掉,Git 就认为你已经“处理”了这些改动,合并(merge)时就不会再因为“overwrite”报错了。