首页 > 解决方案 > 来自远程分叉存储库的 Gitlab 合并请求通过命令行不创建任何合并提交

问题描述

我正在尝试从命令行合并合并请求(Gitlab)。

在处理了一个虚拟存储库之后,我知道如果我有合并合并请求的权限,我可以直接通过命令行合并它们。

我首先在本地系统中克隆上游存储库。之后,我在我的分叉存储库中进行了更改,并为其创建了一个合并请求。

在使用这种方法手动尝试从命令行合并请求时,我得到了一个额外的提交,即合并提交(--no-ff)。

git fetch <Fork_Repo_URL> <Fork_Repo_Branch>
git checkout -b <Branch_Name> FETCH_HEAD

git fetch origin
git checkout origin/master
git merge --no-ff <Remote_Name>-<Branch_Name>

git push origin master   

注意:以上命令是从克隆的上游存储库中使用的。

现在,我想在不克隆上游存储库的情况下做同样的事情,而只是将上游远程添加到我的分叉存储库。

我按照 gitlab 文档中提到的所有步骤手动合并请求,但令我惊讶的是,我看不到任何合并提交,尽管合并请求是在使用这些命令后合并的。

git remote add central <Central_Repo_URL>

git fetch origin master
git checkout -b my_master FETCH_HEAD

git fetch central
git checkout central/master
git merge --no-ff my_master-master

git push central master

那么,有没有办法通过在分叉存储库中配置远程(我有权限)来合并合并请求,并生成合并提交?

我也尝试过这种方式。

git fetch central
git checkout central/master
git merge --no-ff origin/master

git push central master

我也尝试过提交修改,变基。

标签: gitpowershellmergegitlabcommand-line-interface

解决方案


我从上面 torek 的评论中找到了解决方案。实际上通过做

git checkout central/master

我要去一个分离的 HEAD,当我退出节点时,这种模式下的所有提交都会丢失。

所以最好的解决方案应该是创建一个本地分支,它可以跟踪名为central/master的上游远程。(请忽略我的分支名称)

git checkout -b centralMaster central/master

现在完成上述所有步骤后,我们可以轻松解决此问题,并且也可以使用无快进合并提交。

git checkout -b centralMaster central/master
git fetch central
git fetch origin
git merge origin/falcondev --no-ff -m "<Message>"
git push central centralMaster:master

现在上述所有问题都可以轻松解决。

如果我在这些步骤中犯了任何错误,请发表评论。


推荐阅读