git 无法进行快进合并,若要合并此请求,请首先在本地变基

oknrviil  于 2023-01-07  发布在  Git
关注(0)|答案(5)|浏览(638)

最近,我创建了新分支并向主分支创建了合并请求。在TeamLead将合并请求接受到主分支之前,另一名团队成员已向同一分支(新分支)提交了另一个修复。之后,我提交了本地更改并将新分支中的更改拉至本地分支。然后将本地提交推送至新分支

我的团队负责人告诉我将分支的基重定为较早的版本。并解决冲突。我不知道现在该怎么办。有什么想法吗?

a9wyjsp7

a9wyjsp71#

从您的新分支机构开始:
git checkout master以返回主分支
git pull origin master以获取master分支的最新版本
git checkout newBranch以返回新分支机构
git rebase origin/master -i来执行交互式重定基。该命令将引导您完成并允许您选择提交、重命名提交、压缩提交等操作。假设您希望保留所有提交,则当出现合并冲突时,它将暂停,然后您必须在文本编辑器中解决它们。它会告诉你哪里(在你的文本编辑器中)发生了冲突。你必须在修复它们之后添加这些文件,然后执行git rebase --continue来继续变基。
当你完成了rebase之后,你的newBranch会与master同步,并且master中有你开始工作时没有的提交,所有的合并冲突都会被解决,这样你就可以轻松地合并你的newBranch了。

l7mqbcuq

l7mqbcuq2#

你的GitLab似乎被配置为不允许合并提交的特性分支被合并到master分支中,这就是你走错路的地方:
之后,我提交了本地更改,并将newbranch中的更改拉到本地分支。
你应该做的是提交你的工作,然后通过rebase从远程newbranch分支拉取。为了补救这种情况,我建议取消从GitLab拉取时发生的合并提交。合并提交很可能发生了什么,因为git pull默认使用合并策略,而不是rebase策略。检查git log,并查看由于不正确的拉操作而引入了多少提交。假设只有一个合并提交,那么应该执行以下操作:

git reset --hard HEAD~1

再次验证git log看起来是正确的,现在你应该只在分支顶部看到你最近的提交,假设你看到了,那么你就可以通过rebase拉取了:

git pull --rebase origin newbranch

这会引入你同事的提交,然后在分支顶部回放你最近的提交,最后,你可以把分支推出去,这样问题就解决了:

git push origin newbranch

注意,我上面建议的硬重置通常不是一件好事,但在你的例子中,还没有人看到合并提交,因为GitLab拒绝了你的推送尝试,所以你删除它应该是安全的。

w1e3prcc

w1e3prcc3#

在我的例子中,当我发送合并请求而没有从开发分支拉取和合并所有新代码时,就会发生这种情况。
我刚刚在控制台中编写了此内容

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

不改变分支来开发和拉(合并后)它的一切。
为了工作,你需要从develop中提取实际的代码,并将其合并到你的分支中

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>
n1bvdmb6

n1bvdmb64#

我为此吃了不少苦头,今天我找到了一个极其简单的方法:
例如,假设您要传递内容:
从名为 * feature/NativeSubmodule * 的分支到名为 * develop * 的分支。
下载并安装SourceTree [https://www.sourcetreeapp.com],然后在其中打开您的项目,并按照下图中的步骤操作:

然后:

如果你只想用原始分支内容(特性/本机子模块)替换目标分支(开发),你就不必做"* Extra)*"步骤。:D

swvgeqrz

swvgeqrz5#

停留在当前分支:第一个月
这将拉取当前分支并基于原始主分支重新定基。这是一个快进操作。如果第一次尝试时不起作用,请打开VSCode并手动接受/拒绝更改。
git status将显示仍在重新定基。
git rebase --continue将添加新的提交。
git push --force将完成重定基,管道将开始构建。

相关问题