git - 来自远程分叉存储库的 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
我也尝试过提交修改,变基。
解决方案
我从上面 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
现在上述所有问题都可以轻松解决。
如果我在这些步骤中犯了任何错误,请发表评论。
推荐阅读
- c# - “MenuButton” TargetType 与元素“Button”的类型不匹配
- json - scala play json 自定义验证 oneOf
- javascript - ASP.NET MVC 扩展的 Javascript 重用
- windows - Gnuplot,如何从文件 .dat 中绘制数据(绘图问题中没有数据)
- php - 正则表达式用逗号解析
- python - Django API 创建新用户
- asp.net - 在 Asp.Net MVC 5 中处理会话和多个工作进程
- python - 单击按钮时未触发 Onclick 功能
- javascript - 为什么我不能向 Firebase db 添加信息?
- java - 如何使用 apache commons csv parser 遍历已解析的 csv