最近,我创建了newbranch并创建了对Master分支的合并请求。在TeamLead接受合并请求到Master分支之前,另一位团队成员已对该同一个分支(newbranch)提交了另一个修复程序。之后,我提交了本地更改,并将newbranch中的更改拉到了本地分支。我把我的本地承诺推到了newbranch
我的TeamLead告诉我将分支重新设置为较早的版本。 并解决冲突。 我现在不知道该怎么办。有想法吗?
答案 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],然后在其中打开您的项目,并按照此图中的步骤操作:
然后:
如果只想用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