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

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

相关推荐
胖大和尚13 小时前
git本地实现local->remote推送
git
BerryS3N14 小时前
Code Git 工作树:多分支开发的痛点与工作树的曙光
大数据·git·elasticsearch
lbb 小魔仙17 小时前
Git + Python 项目工作流最佳实践:pre-commit、CI、CHANGELOG 自动化
git·python·ci/cd
Xu_youyaxianshen21 小时前
Git 零基础常用指令手册(Gitee / GitHub 通用 )
git·gitee·github
John_ToDebug1 天前
Git Stash 完全指南:临时保存工作区的艺术
人工智能·git·agent
是宇写的啊1 天前
Git远程操作
git
our_times2 天前
# Git 高频命令实战指南:从日常开发到进阶协作
git
PBitW2 天前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
PBitW2 天前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
郑州光合科技余经理2 天前
家政预约小程序后端源码深度剖析:支付回调实战
java·开发语言·前端·git·小程序·架构·php