push to origin/master was rejected错误解决方案

本文介绍在IDEA中遇到Git推送至OSChina仓库被拒绝的问题及其解决方案。通过使用特定的Git命令,如git pull origin master --allow-unrelated-histories,可以解决由于历史记录不一致导致的推送失败。

原文地址:https://www.jianshu.com/p/b0fca181fbf7

 

idea中,发布项目到OSChina的Git中,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected"。

image

image

解决方案如下:

1.切换到自己项目所在的目录,右键选择GIT BASH Here

2.在terminl窗口中依次输入命令:

git pull

git pull origin master

git pull origin master --allow-unrelated-histories

3.在idea中重新push自己的项目,成功!!!



作者:AaChoxsu
链接:https://www.jianshu.com/p/b0fca181fbf7
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

<think> 我们参考了三个引用,其中引用[1]和引用[2]提供了具体的解决方法,引用[3]是问题分类的说明。 用户需求:解决'Push to origin/master was rejected'问题 根据引用[1]和[2],常见的解决方法是使用两条git命令: 1. git pull origin master --allow-unrelated-histories 2. git push -u origin master -f 但是,我们需要更详细的步骤解释,因为用户可能需要理解每一步的作用以及注意事项。 步骤分解: 1. 打开项目所在的文件夹,右键选择“Git Bash Here”(或者使用终端进入项目目录)。 2. 输入第一条命令:`git pull origin master --allow-unrelated-histories` 这条命令的作用是拉取远程仓库的代码,并允许不相关的历史记录进行合并。通常出现这个错误是因为本地仓库和远程仓库的提交历史不一致(比如远程仓库有README.md而本地没有,或者反之)。 3. 这时可能会进入一个合并提交信息的编辑界面(如果出现冲突需要解决冲突),按照提示保存并退出(一般是输入`:wq`)。 4. 输入第二条命令:`git push -u origin master -f` 注意:这里使用了`-f`(force)强制推送,这会覆盖远程仓库的历史。因此,如果远程仓库有其他人协作,强制推送可能会覆盖别人的提交,所以需要谨慎使用。如果只有你一个人在开发,或者你确定可以覆盖,则可以使用。 但是,引用[2]还提到在Android Studio中最后需要重新进行commit、pull、push。这是因为在解决冲突后,可能需要重新提交。 因此,更完整的步骤应该是: 步骤1:在项目目录打开Git Bash 步骤2:执行 `git pull origin master --allow-unrelated-histories`,如果遇到冲突,解决冲突并提交(`git add .` 和 `git commit -m "merge"`) 步骤3:执行 `git push -u origin master -f` (强制推送) 但是,强制推送有风险,所以我们也可以尝试不使用强制推送: 在步骤2之后,我们尝试正常推送:`git push origin master`,如果正常推送不行,再考虑强制推送。 另外,还有一种情况:如果远程仓库有保护分支(比如master分支被保护,不允许强制推送),那么强制推送也会失败。这时需要去代码托管平台(如GitHub、Gitee)暂时取消分支保护。 所以,我们给出两种方法: 方法一(推荐): 1. 在项目目录打开终端(Git Bash)。 2. 输入:`git pull origin master --allow-unrelated-histories` 3. 解决可能出现的冲突(如果有冲突,编辑文件,然后`git add .` 和 `git commit -m "解决冲突"`)。 4. 尝试正常推送:`git push origin master` 5. 如果步骤4失败,再考虑使用强制推送:`git push -u origin master -f`(注意风险) 方法二(直接强制推送,适用于确定可以覆盖的情况): 1. 在项目目录打开终端(Git Bash)。 2. 输入:`git pull origin master --allow-unrelated-histories` (先合并远程的更改) 3. 然后:`git push -u origin master -f` 注意:如果是在团队协作中,最好先和团队成员沟通。 另外,引用[3]提到了一个专栏,但并没有提供具体的解决方法,所以我们主要参考引用[1]和[2]。 根据以上分析,我们给用户的回答应该包括: 1. 问题原因:本地和远程的提交历史不一致。 2. 解决方法:使用两条命令(先拉取并允许不相关历史,再强制推送),并解释每一步的作用。 3. 注意事项:强制推送的风险。 最后,生成相关问题。 </think>### 解决 "Push to origin/master was rejected" 的方法 这个问题通常发生在本地仓库与远程仓库的提交历史不一致时,以下是详细解决步骤: #### 方法一:强制推送(适用于个人项目) 1. **打开终端** 在项目根目录右键选择 `Git Bash Here`(Windows)或使用终端(macOS/Linux) 2. **执行命令** ```bash # 允许合并不相关历史记录 git pull origin master --allow-unrelated-histories # 强制推送覆盖远程记录 git push -u origin master -f ``` 3. **重新提交** 在 IDE 中重新执行 commit → pull → push 流程[^2] #### 方法二:解决冲突(团队协作推荐) 1. **获取远程更新** ```bash git fetch origin ``` 2. **交互式变基** ```bash git rebase -i origin/master ``` 在编辑器中删除重复提交或解决冲突后保存 3. **推送更改** ```bash git push origin master ``` #### 方法三:重置分支 ```bash # 重置到与远程一致的状态 git reset --hard origin/master # 重新添加更改 git add . git commit -m "Reapply changes" # 推送更新 git push origin master ``` > **注意事项**: > - 强制推送 (`-f`) 会覆盖远程历史记录,团队协作中需谨慎使用[^1] > - 若分支受保护,需先在代码平台(如 GitHub/Gitee)暂时解除分支保护 > - 建议定期执行 `git pull` 保持本地与远程同步
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值