【问题标题】:Working with multiple remotes in git: "Your branch is ahead of "origin/master" by X commits.."在 git 中使用多个遥控器:“您的分支在 X 提交之前领先于“origin/master”..”
【发布时间】:2019-12-02 07:14:21
【问题描述】:

我们有一个项目,有两个开发人员,我们有一个远程存储库,我们都在本地克隆了该存储库,并将我们的工作推送到该存储库。

推送更改后,我们转到另一台服务器(我们称之为 S),真正的魔法发生在那里。生产。在这里,我们当然必须从前面提到的 repo 中提取更改。

由于我们有不同的远程存储库(我的 alt 和我朋友的 origin),所以当我希望我的远程更改在生产中更新时,我使用 git pull alt master 有一个通知指出:

"Your branch is ahead of "origin/master" by X commits. Use "git push" to publish your local commits."

这是什么意思?不是我的朋友需要使用“git pull origin master”来更新它的实际建议吗?我没有对 origin/master 的写入权限,所以这是否意味着他制作 git pull origin masterin S 会使通知消失?

我知道这是非常基本的东西,但我们都是这方面的新手,所以非常感谢任何帮助! :) 我也浏览了大多数类似的问题,但找不到答案。

【问题讨论】:

    标签: git version-control git-remote


    【解决方案1】:

    你说

    当我希望我的远程更改在生产中更新时,我使用git pull alt master

    但这不是将新更改发送到生产服务器的适当操作。

    您必须在那里push 您的新提交,这就是消息所暗示的内容。 “领先”意味着另一端未知的提交。

    在一天结束时,一旦你和你的朋友就发布状态达成一致,你们中的一个人应该将新的提交*推送到你的服务器 S。

    * (也许此时还可以考虑在此版本的提交上放置一个标签,这是一个强制执行的好习惯)

    【讨论】:

    • 感谢@RomainValeri 的建议!我承认我们这样做的方式现在有点不正统(坏)。但是我们有这些步骤的原因是因为缺乏使用 git 的 GUI,缺乏知识,而且我们都在远程工作。在本地完成代码后,拉取更改以更新服务器 S,我们发现这比创建合并请求等更方便,在这种情况下更有效。
    【解决方案2】:

    让我分步解释

    1. 你有 Remote 分支让我们说在某个 Commit1
    2. 您克隆了存储库并将您的存储库称为 Alt 并在 Commit1 调用远程存储库。
    3. 现在您对 Alt 进行了更改并将这些更改提交为 X Commits,因此当前的 Repo Alt 位于 CommitX
    4. 由于没有其他人将更改推送到您的 Remote 存储库,因此您的 Remote 处于 commit1 并且从未更新

    “您的分支比“origin/master”领先 X 次提交。使用“git push”发布您的本地提交。”

    那么现在你为什么会收到这条消息?

    因为您的远程仓库位于 Commit1 并且零更新更改且当前仓库位于 CommitX 当您尝试从远程拉取时,基本上是说您没有对 pull 的更改,但当前的 repo 在 X commit 之前,因为你做了这些但还没有推送,建议尝试推送而不是 pull,因为从远程 Pull 没有任何更改

    要避免此消息,只需使用 Git Push Commond 直接推送将您的更改推送到远程仓库,或者您可以按照您当前在项目中关注的任何 GitFlow 进行操作

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 2012-12-18
      • 2013-04-23
      • 2021-07-02
      • 2011-01-21
      • 2020-05-19
      • 2011-01-26
      相关资源
      最近更新 更多