首页 > 解决方案 > 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 上。

我在服务器上做了以下事情:

  1. git status返回“您的分支领先于 'origin/develop' 14 次提交。”
  2. git reset --soft HEAD~1
  3. git status现在返回“分支与 origin/develop 是最新的。要提交的更改:”,然后是一个包含更改的列表。
  4. git reset --hard
  5. git status现在返回“分支与 origin/develop 是最新的。没有什么可提交的。”
  6. git log缺少最新的提交,因此基本上不同意第 5 步。
  7. git pull origin develop这会带来各种变化(这怎么可能,因为第 5 步返回“最新”......?)。
  8. git status返回原始消息“在 'origin/develop' 之前 14 次提交”,我又回到了我开始的地方。

我不明白这一点。从 gitlab 拉出后,服务器如何恢复领先于 gitlab.com(第 8 步)......?我删除了服务器上的所有更改,只是做了一个拉...

标签: gitgitlab

解决方案


  1. git status 返回“您的分支比 'origin/develop' 领先 14 次提交。”

这并不意味着您的分支在远程(原点)之前。origin/develop本地分支。它是一个远程跟踪分支,但不会自动更新。更新它的方法是说git fetch- 你从未报告过的事情。

  1. git reset --soft HEAD~1
  2. git status 现在返回“分支与 origin/develop 是最新的。要提交的更改:”然后是一个包含更改的列表。
  3. git reset --hard
  4. git status 现在返回“分支与 origin/develop 是最新的。没有可提交的内容。”
  5. git log 缺少最新的提交,因此基本上不同意第 5 步。

我不知道你为什么这样做。你从develop. 你为什么要故意跛脚你当地的分支机构?

另外,您对 6 的看法是错误的:已经 lamed develop,您已经使它同意origin/develop,它仍然保持不变。他们是绝对一致的。

  1. git pull origin develop 这会带来各种变化(这怎么可能,因为第 5 步返回“最新”......?)。

这是可能的,因为一旦你跛develop了,遥控器就在你前面。因此,您从遥控器中拉出,现在您develop从遥控器中获取了刚刚切断它的提交。

  1. git status 返回原始消息“在 'origin/develop' 之前 14 次提交”,我又回到了我开始的地方。

因为你说的没有更新。origin/developgit fetch

所以基本上你已经绕圈子了,因为(a)你不知道是什么origin/develop,并且(b)你一直没有更新origin/develop。更新它!说git fetch,然后你就会通过git status实际情况来发现。我怀疑你会发现你完全是最新的并且一切都很好。


推荐阅读