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

San*_*njX 9 git branch github rebase gitlab

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

gitlab错误

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

che*_*bow 25

从你的 newBranch 开始:

git checkout master 回到主分支

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

git checkout newBranch 回到你的新分支

git rebase origin/master -i执行交互式变基。该命令将引导您完成并让您选择提交、重命名它们、压缩它们等。假设您想保留所有这些,它会在出现合并冲突时暂停,然后您必须在文本编辑器中解决它们,它会告诉您(在您的文本编辑器中)发生冲突的位置。您必须在修复这些文件后添加它们,然后git rebase --continue才能继续进行变基。

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


Tim*_*sen 13

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

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

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

git reset --hard HEAD~1
Run Code Online (Sandbox Code Playgroud)

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

git pull --rebase origin newbranch
Run Code Online (Sandbox Code Playgroud)

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

git push origin newbranch
Run Code Online (Sandbox Code Playgroud)

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


Ran*_*all 6

就我而言,当我发送合并请求而不从开发分支提取和合并所有新代码时,就会发生这种情况。

我刚刚在控制台中写了这个

git add .
git commit -m "my commit"
git push 
Run Code Online (Sandbox Code Playgroud)

无需更改分支即可开发并从中提取(合并后)所有内容。

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

git add .
git commit -m "my commit"
git checkout develop
git pull
git checkout <branch_name>
git merge develop
// if have any  conflicts fix them and push it
git push  // or if need set upstream git push --set-upstream origin <branch_name>
Run Code Online (Sandbox Code Playgroud)


Bre*_*ira 5

我受了很多苦,今天我找到了一个极其简单的方法:

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

从名为feature/NativeSubmodule 的分支到名为development 的 分支。

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

教程

进而:

教程2

如果您只想将目标分支(开发)替换为原始分支内容(feature/NativeSubmodule),则不必执行“ Extra) ”步骤。:D