gitlab通过命令行合并请求

时间:2018-06-14 20:28:27

标签: git gitlab git-merge pull-request

我正在使用gitlab。

首先,我没有找到" Pull Request" gitlab上的功能。我想这被命名为" Merge Request" ?

这是我想要理解的:

假设我们有一个名为project1的项目。这个项目是一个公共的gitlab项目,由user1编写。

现在,假设我们有一个贡献者(user2),他想在project1上更改某些内容。 以下是user2应该执行的步骤:

  1. fork project1,在gitlab web界面(Fork按钮)
  2. 在本地计算机上克隆分叉项目。
  3. 创建一个分支(brtest)
  4. 编写或更改源代码文件
  5. 提交更改
  6. 将brtest推入分叉项目
  7. 在gitlab web界面上,请求合并请求
  8. User1将在他的gitlab web界面中看到一个新的合并请求。假设user1同意user2所做的更改。

    如果user1点击"合并"按钮,我可以看到一个链接,它解释了我应该键入哪些CLI命令。这是我想要了解的地方。

    以下是命令:

    git fetch git@gitlabserverofuser2/user2/project1.git brtest
    git checkout -b localbrtest FETCH_HEAD
    git checkout master
    git merge --no-ff localbrtest
    git push origin master
    

    我理解FETCH_HEAD代表第一行提取的内容。我的第一个问题是我应该输入什么而不是FETCH_HEAD?我试图输入这个,但它不起作用:

     git checkout -b localbrtest git@gitlabserverofuser2/user2/project1.git/brtest
    

    我也输入了

    git branch
    git branch -a
    git branch -r
    

    我没有看到任何有关远程brtest分支的信息。我知道它可以与FETCH_HEAD关键字一起使用。但是,为了理解,我想知道"价值" FETCH_HEAD。

    接下来的问题,为什么他们放一个没有快进的参数。省略此参数是否危险?风险是什么?

    上一个问题:合并并没有向我展示冲突。它擦除并替换文件。 在某些情况下,当我在一个项目上使用本地分支时,我有时会看到在发生冲突时包含差异的文件。为什么git在合并请求时不会应用相同的行为?

    由于

2 个答案:

答案 0 :(得分:0)

FETCH_HEAD是指向git历史记录顶部的指针。最新状态。

答案 1 :(得分:0)

对于第二个问题,只有两个分支在同一位置修改了同一文件时,您才会发生冲突。之所以发生冲突,是因为git不知道您实际上想要哪个更改。如果您没有进行任何有冲突的更改,则git会告诉您,然后您需要使用合并程序来选择要保留的更改。

您可能没有看到冲突,因为您在不同的部分上工作,并且不存在冲突。

相关问题