你的分支在3次提交之前领先于'origin/master'

Flu*_*ine 306 git git-rebase

跑步时我得到以下内容 git status

Your branch is ahead of 'origin/master' by 3 commits.
Run Code Online (Sandbox Code Playgroud)

我已经阅读了其他一些帖子,修复此问题的方法是运行,git pull --rebase但究竟什么是rebase,我会丢失数据还是这种与master同步的简单方法?

ibe*_*beu 661

您收到该消息是因为您在本地主服务器中进行了更改,而您没有将它们推送到远程服务器.您有几种方法可以"解决"它,通常取决于您的工作流程如何:

  • 在良好的工作流程中,您的远程主副本应该是好的,而您的本地主副本只是远程副本的副本.使用此工作流程,您将永远不会再次收到此消息.
  • 如果您以其他方式工作并且应该推送您的本地更改,那么只需git push origin假设origin是您的远程
  • 如果您的本地更改不好,则只需删除它们或将本地主服务器重置为远程状态 git reset --hard origin/master

  • git reset --hard origin/master正是我想要的.谢谢. (74认同)
  • 另外fwiw`git diff master origin/master`(即``git diff local remote`)来查看你要删除的更改 (64认同)
  • @iberbeu你解决了我的一天... git reset - hard origin/master是我正在寻找的.为此+1 (4认同)
  • 最后一个给了我我需要的东西! (2认同)

pmr*_*pmr 37

没有什么可以解决的.您只是进行了3次提交,但尚未将它们移动到远程分支.根据您的要求,有几种选择:

  • git push:将更改移动到远程(如果遥控器上已有其他更改,则可能会被拒绝)
  • 什么都不做,继续编码,同步另一天
  • git pull:从远程获取更改(如果有)并将它们合并到您的更改中
  • git pull --rebase:如上所述,但尝试在远程更改之上重做您的提交

你处于一个经典的情况(虽然通常你不会在大多数工作流程中对master有很多贡献).以下是我通常会做的事情:查看我的更改.也许git rebase --interactive在他们身上做一些化妆品,丢掉那些吮吸,重新排序,使它们更合乎逻辑.现在将它们移动到遥控器上git push.如果由于我的本地分支不是最新的而被拒绝:git pull --rebase在最近的更改之后git push再次重做我的工作.


Abh*_*oel 29

使用这4个简单的命令

第1步:git checkout <branch_name>

进入那个分支是显而易见的.

第2步 :git pull -s recursive -X theirs

如果发生冲突,请进行远程分支更改并替换其更改.在这里,如果你这样做,git status你会得到这样的东西,你的分支在3个提交之前超过'origin/master'.

第3步 :git reset --hard origin/<branch_name>

第4步 :git fetch

硬重置您的分支.

请享用.


Bit*_*tor 17

我在Bitbucket上合并了一个pull请求后遇到了这个问题.

不得不做

git fetch
Run Code Online (Sandbox Code Playgroud)

就是这样.

  • 我正在使用捆绑包中的回购,并且能够通过将“git fetch”应用于当前捆绑包来摆脱该消息。天! (2认同)
  • 在只读签出中,我的 git 状态显示我提前了 2 个提交,日志看起来应该如此 - 所有提交都在源中。我做了一个 git pull 并领先 5 个提交..WTF???只需要获取刷新本地索引...一切都很好:) (2认同)

Syl*_*sne 11

此消息git表示您已在本地master存储库中进行了三次提交,并且尚未将它们发布到存储库.为此运行的命令是git push {local branch name} {remote branch name}.

当你在本地仓库中没有远程仓库的提交时,命令git pull(和git pull --rebase)用于另一种情况.该--rebase选项意味着git将您的本地提交移到一边,与远程仓库同步,​​然后尝试从新状态应用您的三个提交.如果存在冲突,它可能会失败,但随后会提示您解决它们.rebase如果您不知道如何通过使用解决冲突,也可以中止,git rebase --abort并在运行之前返回状态git pull --rebase.


Ale*_*lex 10

通常,如果我必须检查哪些提交与我的主人不同:

git rebase -i origin/master
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以看到提交并决定放弃或选择...

  • 这个卑微的答案一直到这里就是我需要做的。我不知道如何找出差异,并且我所有的各种“git diff ...”魔法都不起作用。当我这样做时,它给了我“noop”作为唯一的提交,当我接受它时,现在我的分支与 origin/master 同步。所以看来与 origin/master 的提交差异实际上没有任何作用。 (2认同)

Pra*_*dka 8

如果你的 git 说你提前提交了,那么首先,

git push 原点

确保你已经在 repo 中推送了你所有的最新工作

然后,

git reset --hard origin/master

重置并匹配 repo


小智 6

git reset --hard origin/master

使用这个命令


小智 5

在我合并 Bitbucket 上的拉取请求后,我就发生过一次这种情况。

我只需要这样做:

git fetch

我的问题解决了。我希望这有帮助!!!

  • 复制自[之前的答案](/sf/answers/2861651551/) (2认同)