本地非空仓库关联远程及推送失败的Git问题求助
解决非裸Git仓库Push到当前分支的拒绝问题
针对你遇到的远程非裸仓库无法Push到master分支的问题,以下是几种不需要额外创建裸仓库的解决办法:
方法一:配置远程仓库自动同步工作区(推荐)
Git 2.3及以上版本支持一个安全的配置,允许Push到当前分支并自动更新远程工作区,避免索引和工作区不一致:
- 登录远程服务器,进入目标仓库目录
- 执行以下命令:
之后本地再执行git config receive.denyCurrentBranch updateInsteadgit push origin master时,远程会自动将工作区和索引同步到Push后的HEAD状态,无需手动执行git reset --hard。
方法二:切换远程仓库的当前分支
让远程仓库的当前分支不再是master,这样Push到master就不会触发限制:
- 登录远程服务器,进入仓库目录,创建并切换到一个临时分支:
git checkout -b backup_branch - 本地正常执行
git push origin master即可成功 - 如果需要远程工作区保持master分支的最新状态,可在Push后登录远程服务器,执行:
git checkout master # 若远程工作区有未提交修改,此命令会覆盖,请谨慎操作 git reset --hard origin/master
方法三:Push到远程非master分支后再合并
通过中转分支避免直接Push到远程master:
- 本地将内容Push到远程的一个新分支(比如dev):
git checkout local git push origin local:dev - 登录远程服务器,进入仓库目录,合并dev分支到master:
这种方式适合需要在远程做代码审核或手动确认后再合并的场景。git checkout master git merge dev
内容的提问来源于stack exchange,提问作者BrownianBridge
相关产品推荐
相关产品推荐

