Git VCS如何从索引删除文件?Android Studio提交失败求助
1. 如何在Git VCS中从索引里删除文件?
Git的索引(也就是常说的暂存区)是用来筹备下次提交内容的中间环节,根据你的实际需求,可以分两种场景处理:
如果文件已经在Git仓库中,想从索引移除但保留本地文件:
用这条命令,它只会把文件从索引中移除,不会删除你本地的文件:git rm --cached <文件名>举个例子,要移除
app/src/main/java/com/LoginFragment.java就运行:git rm --cached app/src/main/java/com/LoginFragment.java如果文件还没提交到仓库,只是刚被暂存(比如用
git add添加的),想取消暂存:
用这条命令撤销暂存操作:git reset HEAD <文件名>要是想一次性取消所有暂存的文件,直接用:
git reset HEAD .
2. 解决Android Studio 3.1.1提交报错问题
你遇到的这个报错,核心原因是Git在Windows、macOS这类系统上默认不区分文件名大小写。所以LoginFragment.java和LogInFragment.java在Git眼里是同一个文件,索引里已经存在其中一个,现在你试图添加另一个自然会冲突。
给你一套具体的解决步骤:
先清理索引里的冲突文件:
先把索引里的那个重复文件移除,用之前提到的命令:git rm --cached app/src/main/java/com/LogInFragment.java # 如果你要保留的是LogInFragment,就换成对应的文件名开启Git的大小写敏感性:
运行这条命令让Git区分文件名大小写(当前仓库生效):git config core.ignorecase false要是想让所有仓库都生效,加上
--global参数:git config --global core.ignorecase false重新提交正确的文件:
确认本地文件的大小写是你想要的状态,然后重新添加到索引并提交:git add app/src/main/java/com/LoginFragment.java git commit -m "修复文件名大小写问题并提交"
另外在Android Studio里操作的话,你也可以通过Git > Repository > Reset HEAD...来取消暂存冲突文件,调整好文件名后再重新提交,效果和命令行是一致的。
内容的提问来源于stack exchange,提问作者Sia




