NetBeans向GitHub推送变更失败咨询:分支分叉、文件权限异常问题
问题成因及解决方案
问题1:执行git add时报zsh权限错误
成因
执行git add时存在语法错误:你在第一行写git add .DS_Store后直接换行写其他文件路径,zsh会把换行后的路径当作独立命令执行,这些文件不是可执行文件,因此触发权限不足报错。
解决方案
所有需要add的文件路径放在同一行,或直接用通配符批量操作:
# 批量添加指定文件 git add **/.DS_Store src/test/ target/ # 或更简便,添加当前目录下所有未跟踪/修改的文件 git add .
问题2:本地master分支与远程origin/master分支分叉
成因
你本地提交代码前没有拉取远程最新代码,同时远程分支也存在新提交,导致两个分支的提交历史不一致,Git无法直接执行推送操作。
解决方案
先拉取远程代码合并到本地,解决可能存在的冲突后再推送:
# 拉取远程master分支代码并合并到本地 git pull origin master # 执行后如果提示冲突,打开冲突文件修改完成后执行git add 冲突文件,再执行git commit # 合并完成后推送本地提交 git push origin master
如果确认远程提交无保留价值,想直接用本地代码覆盖远程,可以使用强制推送(仅确认远程提交无用时操作,会丢失远程的提交记录):
git push -f origin master
优化建议
.DS_Store是macOS系统生成的缓存文件,target是Maven项目的编译输出目录,均不需要提交到Git仓库,建议配置.gitignore文件避免这类文件被误提交:
- 在项目根目录新建名为
.gitignore的文件,写入以下内容:
# macOS系统缓存文件 .DS_Store **/.DS_Store # Maven编译输出目录 target/ # IDE配置目录(可选,不需要同步NetBeans配置时添加) .nb-gradle/ .idea/ *.iml
- 执行以下命令删除已经被跟踪的无关文件,提交后不会再出现这类文件的未跟踪提示:
git rm --cached **/.DS_Store git rm -r --cached target/ git add .gitignore git commit -m "chore: 配置.gitignore过滤无关文件"
内容的提问来源于stack exchange,提问作者cocobeans
相关产品推荐
相关产品推荐

