您的分支比“origin/master”领先 3 个提交

问题描述 投票:0回答:11

我在运行时收到以下信息

git status

Your branch is ahead of 'origin/master' by 3 commits.

我在其他帖子上读到了修复此问题的方法是运行

git pull --rebase
但是rebase到底是什么,我会丢失数据还是这是与master同步的简单方法?

git git-rebase
11个回答
1204
投票

您收到该消息是因为您在本地主机中进行了更改,但没有将它们推送到远程。您有多种方法可以“解决”它,这通常取决于您的工作流程:

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

62
投票

使用这 4 个简单的命令

第 1 步

git checkout <branch_name>

这显然要进入那个分支。

第2步

git pull -s recursive -X theirs

如果出现冲突,则进行远程分支更改并替换为它们的更改。 在这里,如果你这样做

git status
你会得到类似这样的东西 你的分支领先于 'origin/master' 3 次提交。

第3步

git reset --hard origin/<branch_name>

第 4 步

git fetch

硬重置你的分支。

享受吧。


48
投票

没有什么需要修复的。您只是进行了 3 次提交,但尚未将它们移至远程分支。有多种选择,具体取决于您想要做什么:

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

您处于经典情况(尽管在大多数工作流程中您通常不会在 master 上投入太多)。这是我通常会做的事情:检查我的更改。也许可以做一个

git rebase --interactive
来对它们进行一些修饰,扔掉那些糟糕的,重新排序,使它们更符合逻辑。现在使用
git push
将它们移动到遥控器。如果由于我的本地分支机构不是最新的而被拒绝:
git pull --rebase
在最新更改的基础上重做我的工作,然后再次
git push


27
投票

我在 Bitbucket 上合并拉取请求后遇到了这个问题。

必须做

git fetch

就是这样。


23
投票

如果你的 git 说你正在提前提交,那么就 首先,

git推送原点

确保您已将所有最新工作推送到仓库中

那么,

git重置--hard origin/master

重置并与存储库匹配


18
投票

通常,如果我必须检查哪些提交与主版本不同,我会这样做:

git rebase -i origin/master

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


11
投票

来自

git
的这条消息意味着您已在本地存储库中进行了 3 次提交,但尚未将它们发布到
master
存储库。运行的命令是
git push {local branch name} {remote branch name}

命令

git pull
(和
git pull --rebase
)适用于另一种情况,即远程存储库上有本地存储库中没有的提交。
--rebase
选项意味着
git
会将您的本地提交移到一边,与远程存储库同步,然后尝试从新状态应用您的三个提交。如果存在冲突,它可能会失败,但系统会提示您解决它们。如果您不知道如何使用
rebase
解决冲突,也可以中止
git rebase --abort
,您将回到运行
git pull --rebase
之前的状态。


8
投票

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

我只需要做:

git fetch

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


3
投票

git reset --hard origin/master

使用此命令


1
投票

我遇到了这个问题,我使用不带引号的“git reset --hard origin/master”将本地 master 重新设置为远程 master 分支。


0
投票

正如其他人所说,您已提交但未推送本地更改。

如果您不确定有哪些更改,并且想在推送之前进行检查,下面的命令将告诉您哪些文件已更改:

git diff --stat origin/master..

如果删除

--stat
,它将显示所有文件的差异。

© www.soinside.com 2019 - 2024. All rights reserved.