git - Git:无法使远程和本地/服务器相同
问题描述
git status
在服务器上返回:
On branch develop
Your branch is ahead of 'origin/develop' by 14 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
我的目标是让 gitlab.com 和服务器上的 git 分支同步。当我查看两者之间的差异时,它指出服务器上的远程在前面的提交,我相信这些提交实际上在 gitlab.com 上。
我在服务器上做了以下事情:
git status
返回“您的分支领先于 'origin/develop' 14 次提交。”git reset --soft HEAD~1
git status
现在返回“分支与 origin/develop 是最新的。要提交的更改:”,然后是一个包含更改的列表。git reset --hard
git status
现在返回“分支与 origin/develop 是最新的。没有什么可提交的。”git log
缺少最新的提交,因此基本上不同意第 5 步。git pull origin develop
这会带来各种变化(这怎么可能,因为第 5 步返回“最新”......?)。git status
返回原始消息“在 'origin/develop' 之前 14 次提交”,我又回到了我开始的地方。
我不明白这一点。从 gitlab 拉出后,服务器如何恢复领先于 gitlab.com(第 8 步)......?我删除了服务器上的所有更改,只是做了一个拉...
解决方案
- git status 返回“您的分支比 'origin/develop' 领先 14 次提交。”
这并不意味着您的分支在远程(原点)之前。origin/develop
是本地分支。它是一个远程跟踪分支,但不会自动更新。更新它的方法是说git fetch
- 你从未报告过的事情。
- git reset --soft HEAD~1
- git status 现在返回“分支与 origin/develop 是最新的。要提交的更改:”然后是一个包含更改的列表。
- git reset --hard
- git status 现在返回“分支与 origin/develop 是最新的。没有可提交的内容。”
- git log 缺少最新的提交,因此基本上不同意第 5 步。
我不知道你为什么这样做。你从develop
. 你为什么要故意跛脚你当地的分支机构?
另外,您对 6 的看法是错误的:已经 lamed develop
,您已经使它同意origin/develop
,它仍然保持不变。他们是绝对一致的。
- git pull origin develop 这会带来各种变化(这怎么可能,因为第 5 步返回“最新”......?)。
这是可能的,因为一旦你跛develop
了,遥控器就在你前面。因此,您从遥控器中拉出,现在您develop
从遥控器中获取了刚刚切断它的提交。
- git status 返回原始消息“在 'origin/develop' 之前 14 次提交”,我又回到了我开始的地方。
因为你说的还没有更新。origin/develop
git fetch
所以基本上你已经绕圈子了,因为(a)你不知道是什么origin/develop
,并且(b)你一直没有更新origin/develop
。更新它!说git fetch
,然后你就会通过git status
实际情况来发现。我怀疑你会发现你完全是最新的并且一切都很好。
推荐阅读
- javascript - 如何创建具有无限嵌套子级的数组?
- json - 功能应用程序 Vnet/子网集成
- kong-plugin - Konga基本身份验证出现在每个页面上
- elasticsearch - 如何同时创建字段关键字类型和文本类型以同时启用聚合和自由文本搜索
- python-3.x - 如何在 Python 3.9 中设置 http 代理
- javascript - nextjs 中无响应的 Grid 组件
- c# - XML反序列化嵌套
有属性 - r - 删除异常值的用户函数
- java - 将 JBoss 主页替换为应用程序主页
- docker - 使用 docker compose 和 mountebank 模拟外部调用