GitHub + MEAN:如何重置远程master分支及解决提交权限错误
解决Git权限错误与重置远程Master分支问题
一、解决Permission denied无法提交系统文件的问题
首先得明确:这个USS.jtx是Windows系统的通讯存储文件,完全不属于你的MEAN项目范畴,它被误加入Git暂存区才触发了权限问题——哪怕你有文件权限,Git也根本不应该追踪这类系统级文件。
解决步骤:
- 先取消暂存这个错误文件:
git rm --cached AppData/Local/Comms/UnistoreDB/USS.jtx - 检查你的项目根目录,确认没有把Git仓库初始化在包含
AppData的上层目录(比如用户目录),如果是,建议把仓库迁移到真正的项目根文件夹下。 - 最后更新
.gitignore文件,添加规则避免以后误加系统文件:
在项目根目录的.gitignore里加入:
保存后再执行# Windows系统文件排除 AppData/ # 顺便补充MEAN项目常见忽略项 node_modules/ .vscode/ dist/git add .和git commit,就不会再出现这个权限错误了。
二、完全重置远程Master分支
如果你需要彻底覆盖远程master分支的历史,让它和本地指定状态完全一致,按以下步骤操作(重要提醒:强制推送会覆盖远程历史,团队协作时一定要提前告知队友!):
情况1:重置到本地某个干净的历史提交
- 切换到本地
master分支:git checkout master - 重置本地分支到目标提交(把
<commit-hash>替换成你想要的提交哈希值,比如项目初始提交的哈希):git reset --hard <commit-hash> - 强制推送到远程仓库,覆盖远程
master分支:git push origin master --force
情况2:完全清空远程分支,创建全新的master
如果你想彻底清空远程master,从零开始提交内容:
- 删除远程
master分支:git push origin --delete master - 在本地创建全新的
master分支(如果需要):git checkout -b master - 添加并提交初始内容后推送到远程:
git add . git commit -m "Reset master: initial commit" git push origin master
再次提醒:强制推送会破坏远程分支的历史记录,团队协作场景下,务必确保队友已备份本地分支,并且知晓需要重新拉取重置后的分支。
内容的提问来源于stack exchange,提问作者The Fox
相关产品推荐
相关产品推荐

