【问题标题】:Why are commits from other pull request in my new pull request?为什么我的新拉取请求中有来自其他拉取请求的提交?
【发布时间】:2018-06-26 11:48:59
【问题描述】:

我对在 git 团队中工作还很陌生。

我从“origin/master”开始。

  1. 首先我创建了一个新分支feature/26062018-offline-seite_ef

  2. 我添加了提交。

  3. 我查看了本地的master 分支。

  4. 我在功能分支中合并(git merge feature/26062018-offline-seite_ef

  5. 我推送到远程服务器(git push origin feature/26062018-offline-seite_ef

  6. 我切换到 Bitbucket 并创建了拉取请求。有一个 id 为 f0ebe14 的提交,但我希望是 0593ba83

然后我开发了其他东西:

  1. 首先我创建了一个新分支feature/26062018-newsletter-popup_ef

  2. 我添加了提交。

  3. 我查看了本地的master 分支。

  4. 我在功能分支中合并(git merge feature/26062018-newsletter-popup_ef

  5. 我推送到远程服务器(git push origin feature/26062018-newsletter-popup_ef

  6. 我切换到 Bitbucket 来创建拉取请求。但这就是我得到的:

我只期望提交 7a52ce3b,但我得到了这两个。

我的 git 工作流程有什么问题?

【问题讨论】:

    标签: git bitbucket


    【解决方案1】:

    请注意您最初在步骤 3-5 中所做的操作:

    1. 我查看了本地的master 分支。

    2. 我在功能分支中合并(git merge feature/26062018-offline-seite_ef

    3. 我推送到远程服务器(git push origin feature/26062018-offline-seite_ef

    您在第 4 步中所做的有时称为测试合并。您没有在任何地方推送此合并,但您的存储库中仍然有它。

    然后,您在第二组步骤中继续:

    创建了一个新分支feature/26062018-newsletter-popup_ef

    此时,这个特定的名称命名了您所做的测试合并。您在第 2 步中所做的其他提交是基于此合并构建的,因此您最终推送的提交是:

    • 您在第一组中所做的所有提交(他们可能已经通过您之前的拉取请求获得了这些提交,因此该部分可能进行得非常快);加
    • 合并提交;加
    • 您在创建 feature/26062018-newsletter-popup_ef 后所做的提交。

    因此,这些是您的第二个拉取请求中的提交:您第一个中的所有提交,加上合并,加上您想要的提交。

    您应该做的是以下任何一项:

    • 在某个other 分支(不是你的master)上进行测试合并,或者
    • master 上进行测试合并,然后将其删除(例如git reset --hard HEAD~1);或
    • 甚至不必费心进行测试合并(仅在某些受限情况下的良好做法)。

    此时您需要做的是撤回第二个拉取请求。您可以从第一次测试合并之前的最后一次提交开始创建一个 分支 - 请记住,此时您的 master 上有 两个 测试合并。这个起点通常也会匹配origin/master 的提交哈希ID。现在您有了一个新分支,您可以使用 git cherry-pick 将所需的提交复制到正确扩展图形的新提交中,如果您愿意,可以测试合并提交,然后推送 这些 提交。 (您可以使用git branch -m 重命名提交过多的分支来重用分支名称;请参阅the documentation。)

    【讨论】:

      【解决方案2】:

      您从 feature/26062018_offline-seite_ef 分支而不是 master 分支创建了新分支 feature/26062018-newsletter-popup_ef。因此,您将 feature/26062018_offline-seite_ef 分支的更改包含到您的分支中。

      【讨论】:

      • 但是我在创建分支feature/26062018-newsletter-popup_ef之前检查了master?!那么这怎么可能呢?
      【解决方案3】:

      我通过执行git reset --hard 6d960676(重置为原点/主控)“解决”了它。然后我完全重新开始,但这一次我在开发我的功能后根本没有与我的本地大师合并。我只是让分支打开并且未连接到我的本地主服务器并推送。

      每次创建新功能分支之前,我都会先签出 master,这样该分支就不会在另一个功能分支的顶部创建。

      问题:如果我想查看功能所做的更改,我每次都必须检查特定的分支,我无法组合这些功能。一旦我合并,那么混乱又开始了......

      【讨论】:

        猜你喜欢
        • 2011-07-18
        • 1970-01-01
        • 2016-05-02
        • 2020-05-22
        • 1970-01-01
        • 2018-06-21
        • 2011-05-05
        • 1970-01-01
        • 2018-01-19
        相关资源
        最近更新 更多