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确实正常了:

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

相关推荐
如意.75912 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
用户91868612868717 小时前
Git 版本控制完全指南:从入门到精通
git
简离19 小时前
Git 一次性清理已跟踪但应忽略文件
前端·git
Drone_xjw19 小时前
【环境搭建】Windows 10上使用Docker搭建本地Git仓库(Gitea)完整教程
windows·git·docker
疯狂成瘾者19 小时前
git学习目录
git·学习
曾几何时`20 小时前
Git——自用手册
git
新镜1 天前
【git】 曾经合入的文件被删除,再次合入时,相同的文件路径并不会自动合入
git
console.log('npc')1 天前
git commit之后,想撤销commit
git
春日见1 天前
UniAD的逻辑,与传统自动驾驶的差异
人工智能·windows·git·机器学习·docker·容器·自动驾驶
奋斗者1号1 天前
解决Git Push Gerrit分支失败的全流程实战
大数据·git·elasticsearch