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

时间:2013-04-29 21:01:58

标签: git git-rebase

运行git status

时,我收到以下信息
Your branch is ahead of 'origin/master' by 3 commits.

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

9 个答案:

答案 0 :(得分:569)

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

  • 在良好的工作流程中,您的远程主副本应该是好的,而您的本地主副本只是远程主副本的副本。使用此工作流程,您将永远不会再收到此消息。
  • 如果您以其他方式工作,应该推动您的本地更改 然后只是git push origin假设原点是你的远程
  • 如果您的本地更改不好,请将其删除或重置您的 远程 git reset --hard origin/master
  • 的本地主人

答案 1 :(得分:32)

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

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

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

答案 2 :(得分:20)

使用这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

硬重置你的分支。

享受。

答案 3 :(得分:12)

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

不得不做

.git

就是这样。

答案 4 :(得分: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之前返回状态。

答案 5 :(得分:6)

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

git rebase -i origin/master

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

答案 6 :(得分:4)

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

  

git push origin

确保您已将所有最新作品推送回repo

然后,

  

git reset --hard origin / master

重置并与repo匹配

答案 7 :(得分:2)

在我合并Bitbucket上的拉取请求后,这件事发生在我身上。

我必须这样做:

git fetch

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

答案 8 :(得分:1)

$ git fetch

  - remote: Enumerating objects: 3, done.
  - remote: Counting objects: 100% (3/3), done.
  - remote: Compressing objects: 100% (3/3), done.
  - remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0


$ git pull 

   - Already up to date!
   - Merge made by the 'recursive' strategy.

最后:

$ git push origin