快进合并是不可能的。要合并此请求,请先在本地进行变基

时间:2018-10-30 14:18:34

标签: git github gitlab branch rebase

最近,我创建了newbranch并创建了对Master分支的合并请求。在TeamLead接受合并请求到Master分支之前,另一位团队成员已对该同一个分支(newbranch)提交了另一个修复程序。之后,我提交了本地更改,并将newbranch中的更改拉到了本地分支。我把我的本地承诺推到了newbranch

gitlab error

我的TeamLead告诉我将分支重新设置为较早的版本。 并解决冲突。 我现在不知道该怎么办。有想法吗?

4 个答案:

答案 0 :(得分:0)

从您的newBranch开始:

git checkout master返回主分支

git pull origin master获取master分支的最新版本

git checkout newBranch回到您的newBranch

git rebase origin/master -i来执行迭代基础。该命令将引导您完成操作,并让您选择提交,重命名它们,压缩它们,等等。假设您想保留所有这些内容,那么当合并冲突时它将暂停,然后您必须在文本编辑器中解决它们,它将告诉您发生冲突的位置(在文本编辑器中)。修复这些文件后,您将不得不添加这些文件,然后执行git rebase --continue来进行重新设置。

完成重新设置后,您的newBranch将与master同步,并且在master中有任何在开始工作时不存在的提交,所有合并冲突都将得到解决,因此您可以轻松合并newBranch

答案 1 :(得分:0)

您的GitLab似乎配置为不允许具有合并提交的功能分支合并到master分支中。这是您转错方向的地方:

  

此后,我提交了本地更改,并将newbranch中的更改拉到本地分支。

您应该做的是提交您的工作,然后从远程newbranch分支通过rebase拉取。为了解决这种情况,我建议取消从GitLab提取时发生的合并提交。合并提交很可能发生了,因为默认情况下git pull使用合并策略,而不是变基策略。检查git log,查看由于不正确的提取而引入了多少次提交。假设只有一个合并提交,则应执行以下操作:

git reset --hard HEAD~1

再次验证git log看起来正确。现在,您应该只在分支顶部看到最新的提交。假设您确实看到了这一点,那么最好通过rebase拉动:

git pull --rebase origin newbranch

这将引入您同事的提交,然后在分支顶部重播您的最新提交。最后,您可以将分支推出,该问题应该得到解决:

git push origin newbranch

请注意,按照我上面的建议进行硬重置通常不是一件好事。但是在您的情况下,还没有人看到过合并提交,因为GitLab拒绝了您进行推送的尝试。因此,您应该安全地删除它。

答案 2 :(得分:0)

我受了很多苦,今天我发现了一种极其简单的方式:

例如,假设您要传递内容:

来自名为 feature / NativeSubmodule 的分支 到名为 develop 的分支。

下载并安装SourceTree [https://www.sourcetreeapp.com],然后在其中打开您的项目,并按照此图中的步骤操作:

tutorial

然后:

tutorial2

如果只想用Origin分支内容(功能/ NativeSubmodule)替换目标分支(开发),则不必执行“ Extra)”步骤。 :D

答案 3 :(得分:0)

在我的情况下,这种情况发生在我发送合并请求而没有从develop分支提取和合并所有新代码时。

我只是在控制台上写的

function woocommerce_category_image() {
    if ( is_product_category() ){
        global $wp_query;
        $cat = $wp_query->get_queried_object();
        $thumbnail_id = get_term_meta( $cat->term_id, 'thumbnail_id', true );
        $image = wp_get_attachment_url( $thumbnail_id );
        if ( $image ) {
            echo '<img src="' . $image . '" alt="' . $cat->name . '" />';
        }
    }
}

没有更改分支即可开发和提取(合并后)其中的所有内容。

对于工作,您需要从开发中提取实际代码并将其合并到分支中

git add .
git commit -m "my commit"
git push