Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]

远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码

今天遇到一个超级奇葩的问题,我明明已经提交了代码,而且在浏览器看到的最新代码已经是我提交的了,但是其他同事拉取的时候总是上一个版本的,这让我一头雾水:


克隆这个残酷拉取也是上一个版本的代码:

这我就非常懵逼了,后来从https://worktile.com/kb/ask/273724.html这篇文章看到别人的说法:

c 复制代码
更改远程分支的 `head` 在 `git` 中是一个常见的任务。`head` 是指向当前分支提交的指针,它通常指向最新的提交。更改远程分支 `head` 可能由于多种原因,比如错误的 `push` 或需要撤销最近的提交。

下面是几种常见的方法来更改远程分支的 `head`:

1. 使用 `git reset` 命令:使用 `git reset ` 命令可以将远程分支的 `head` 指向指定的 `commit`。这将使远程分支回退到指定的提交,并丢弃所有更近的提交。这个方法的一个重要注意事项是,如果你已经推送了这些提交到远程仓库,其他开发者可能已经拉取了这些提交。在这种情况下,更改远程分支的 `head` 可能会导致冲突和代码丢失。

2. 使用 `git branch` 命令:使用 `git branch` 命令可以在本地创建一个新的分支,并将其分支指向指定的 `commit`。然后,你可以将新的本地分支推送到远程仓库,覆盖原始的远程分支。这个方法的好处是不会改变原始分支的提交历史,而是创建一个全新的分支。

3. 使用 `git revert` 命令:使用 `git revert ` 命令可以撤销指定提交的更改,并创建一个新的提交以表示这个撤销。这将在提交历史中保留原始提交,并将更改应用于与远程分支 `head` 相对的新提交上。然后,你可以将新的提交推送到远程仓库,以更新远程分支的 `head`。

4. 使用 `git cherry-pick` 命令:使用 `git cherry-pick ` 命令可以将指定提交的更改应用于当前分支。你可以先将远程分支切换到本地或创建一个新的本地分支,然后使用 `git cherry-pick` 命令将指定提交的更改应用于当前分支。然后,你可以将当前分支推送到远程仓库,以更新远程分支的 `head`。

5. 使用 `git push` 命令强制推送:如果你确定要更改远程分支的 `head`,并且不关心可能发生的代码丢失或冲突,你可以使用 `git push -f` 命令来强制推送更改。这将覆盖远程分支的当前提交,并将远程分支的 `head` 指向本地分支的最新提交。请注意,强制推送可能导致其他开发者的代码丢失或冲突,所以在使用这个方法之前要小心谨慎,并与团队成员进行沟通。

总之,更改远程分支的 `head` 是一个敏感的操作,可能会导致代码丢失或冲突。在进行这个操作之前,请确保理解它的后果,并与团队成员进行沟通。

这里尝试使用git reset命令:

然后推送,之后再看状态可以看到远端的head确实正常了:

这时候我同事也可能够正确拉取到代码了:

相关推荐
Winlifes19 小时前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
郑州光合科技余经理2 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123452 天前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lcr3s2 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git
玄芯散人3 天前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
寺中人3 天前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
荔枝梅梅3 天前
新手程序员 SSH 第一课:从 Git 仓库连接失败理解 SSH 协议与密钥配置
git
玄芯散人3 天前
【筑基·057】Git代码时光机:版本控制入门到分支管理
git·版本控制·嵌入式开发
szephyr3 天前
Git 分支管理实战:feature/release/hotfix 怎么用才不乱
git·分支管理·团队协作·工作流·hotfix
一木 之林3 天前
手搓家庭服务器:二手装机、Docker部署、端口映射与frp内网穿透
服务器·人工智能·git·编辑器