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

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

相关推荐
Python私教2 小时前
AI 并行编码的 Worktree 生命周期:创建、隔离与安全回收
人工智能·git
互联网中的一颗神经元3 小时前
16 — 改写历史 rebase:搬家到新楼层,不是合并
git
互联网中的一颗神经元7 小时前
19 — 贮藏与清理:stash 是抽屉,gc 是打包箱
git
用户330144867639 小时前
20 — 远程进阶:强制推送的保险绳——force-with-lease
git
Cooper259 小时前
别急着改 Git 历史:rebase、cherry-pick、bisect 与 reflog 的安全操作顺序
git
刚入门的大一新生10 小时前
Linux-版本控制器Git
git
扶苏100210 小时前
同一个 Git 项目整出两份,切分支互不影响?两种方案实测
大数据·git·elasticsearch
ZJU_统一阿萨姆10 小时前
【Git】Github 开源许可证详解
git·开源·github
Geek-Chow1 天前
Git 标签与发布流程:轻量标签、附注标签与签名标签
git·tags
wear工程师1 天前
Git 冲突怎么解决:别只删标记,先看懂暂存区的 1、2、3 阶段
git