为何推送至origin/master总是被拒绝?Git新手部署文件求助
嘿,我来帮你一步步搞定这些Git问题!看起来你现在碰到了三个核心问题:换行符导致的提交异常、本地和远程仓库历史不关联,还有凭证验证的问题,咱们一个个来解决:
1. 先搞定LF/CRLF换行符问题
你之前提到的设置autocrlf为false是完全正确的,尤其是在Windows用Git Bash的时候,这个设置能避免Git自动转换换行符导致的无意义文件变更。先确保这个配置生效:
git config --global core.autocrlf false
执行完之后,用git status检查下本地文件,如果有因为换行符产生的未追踪/变更文件,且你没有做过实际修改的话,可以用git checkout .撤销这些自动变更。
2. 解决「拒绝合并无关历史」的核心问题
这个报错说明你的本地仓库和远程GitHub仓库的提交历史完全没有关联,Git默认不允许合并这种情况。你需要用带参数的pull命令来强制合并:
git pull origin master --allow-unrelated-histories
执行后Git会打开默认编辑器让你填写合并提交信息,直接保存退出就行。如果出现冲突(文件里出现<<<<<<<、=======、>>>>>>>这类标记),你需要手动打开冲突文件,保留你需要的内容并删除这些标记,然后执行:
git add . git commit -m "合并远程仓库历史到本地"
3. 修复「github: command not found」凭证问题
这个是因为Git的凭证助手找不到对应的工具,咱们重新设置一个通用的凭证助手即可:
- Windows系统:
git config --global credential.helper manager-core
- Mac系统:
git config --global credential.helper osxkeychain
- Linux系统:
git config --global credential.helper libsecret
设置后下次推送时,Git会弹出窗口让你登录GitHub,之后会自动记住凭证。
4. 最后完成推送
等上面的步骤都搞定后,再执行推送命令就应该能成功了:
git push origin master
⚠️ 小提醒:如果本地有还没提交的重要修改,记得先执行git stash暂存,等操作完成后再用git stash pop恢复,避免丢失内容。
内容的提问来源于stack exchange,提问作者Kira Nofans
相关产品推荐
相关产品推荐

