【问题标题】:Gitlab merge request from forked repository remote through command line not creating any merge commits来自远程分叉存储库的 Gitlab 合并请求通过命令行不创建任何合并提交
【发布时间】:2019-11-16 12:39:29
【问题描述】:

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

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

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

在使用这种方法手动尝试从命令行合并请求时,我得到了一个额外的提交,即 merge commit(--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

我也尝试过 commit amend、rebase。

【问题讨论】:

  • 我不确定,但我认为这与您之前的问题相同:stackoverflow.com/questions/58889904/…
  • 对不起,但在上一个问题中,我讲述了上游回购的起源。我也想改变上一个问题,但有点不同
  • 如果我得到这个答案,我会删除之前的
  • 没有问题 :) 顺便说一句,我正试图在另一个问题/线程中帮助你;)
  • 查看我对您上一个问题的详细回答。

标签: git powershell merge gitlab command-line-interface


【解决方案1】:

我从上面 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

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

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

【讨论】:

    猜你喜欢
    • 2016-09-21
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    相关资源
    最近更新 更多