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

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

相关推荐
摆烂且佛系1 天前
十分钟了解Git Cherry-Pick
git
星渊澈1 天前
从github上git clone 比较慢,如何解决。。
git·github
魔都吴所谓2 天前
【Ubuntu】离线环境下Git LFS(deb包)安装与验证完整教程
linux·git·ubuntu
REDcker2 天前
Git worktree:多工作区并行开发与实践
git·worktree
lifewange2 天前
Git版本管理
大数据·git·elasticsearch
尘世壹俗人2 天前
idea提交git版本由于中文文件名卡死不动
java·git·intellij-idea
oushaojun22 天前
git在项目中常用的操作集合
git
qq_396227952 天前
Git 分布式版本控制
分布式·git
无限进步_2 天前
【C++】反转字符串的进阶技巧:每隔k个字符反转k个
java·开发语言·c++·git·算法·github·visual studio
Rabbit_QL2 天前
【Git 报错处理】`remote origin already exists` 是什么意思?
git