【git】有两个远程仓库时的推送、覆盖、合并问题

当你执行 git pull origin develop(或默认的 git pull)时,Git 会把远端 origin/develop 的提交合并到你本地的 develop,如果远端已经丢掉(或从未包含)你之前在私库(priv)里提交过的改动,那这些改动就会被「覆盖」,看起来就像「本地修改没了」。
在这里插入图片描述

要解决这个问题,分两步走:


1. 找回丢失的提交(如果你之前真的在本地有提交过)

  1. git reflog 找到合并之前的那次本地 HEAD:

    git reflog
    

    假设你在 pull 之前的那条记录是:

    abc1234 HEAD@{2}: checkout: moving from ... to develop
    
  2. 创建一个新分支把丢失的提交恢复出来:

    git checko
### 解决 Git 推送远程仓库报错的方法 当遇到 `git push` 到远程仓库失败的情况,可能由多种因素引发。以下是几种常见错误及其解决方案。 #### 1. 同步本地与远程分支历史记录 对于首次推送或长间未同步的项目,可能会因为本地和远程的历史不同而导致冲突。此可以尝试使用带有参数的拉取命令来强制合并两个不相关的历史: ```bash git pull origin master --allow-unrelated-histories[^1] ``` 这会将远程最新的更改下载至本地,并试图自动融合差异之处。如果有任何无法自动化处理的地方,则需人工介入调整直至无误为止。 #### 2. 处理本地额外文件引起的推送问题即使本地包含了更多独有的改动也不会影响上传过程,但如果存在同名却内容不同的文件则可能导致拒绝接收更新的现象发生。确保遵循如下原则可减少此类麻烦的发生几率:即只要不是完全相同的路径下的相同命名资源,在不影响功能的前提下是可以存在于各自环境中的[^2]。 #### 3. 使用 rebase 方式解决冲突 另一种方式是在执行推送之前先通过变基(rebase)的方式使当前工作基于最新的上游版本之上,从而避免直接产生分歧点: ```bash git pull --rebase origin master git push origin master ``` 这种方式能够保持线性的提交历史,使得后续的操作更加顺畅[^4]。 #### 4. 应对网络连接异常导致的 SSL 错误 针对由于网络状况不佳所造成的 OpenSSL 类型的问题(如 "Connection was reset"),建议检查互联网链接稳定性的同也确认防火墙设置是否阻止了必要的端口通信。另外还可以考虑切换协议从 HTTPS 改成 SSH 来绕过某些特定的安全策略限制[^5]: ```bash # 更改远程 URL 至 SSH 形式 git remote set-url origin git@github.com:<用户名>/<项目>.git ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值