【问题标题】:gitlab merge request by command linegitlab通过命令行合并请求
【发布时间】:2018-06-14 20:28:27
【问题描述】:

我正在使用 gitlab。

首先,我没有在 gitlab 上找到“Pull Request”功能。我想这被命名为“合并请求”?

这是我想了解的:

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

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

  1. fork project1,在 gitlab web 界面中(Fork 按钮)
  2. 在他的本地计算机上克隆分叉项目。
  3. 创建一个分支 (brtest)
  4. 编写或更改源代码文件
  5. 提交更改
  6. 将 brtest 推送到分叉项目中
  7. 在 gitlab 网页界面,请求合并请求

User1 将在他的 gitlab 网页界面中看到一个新的合并请求。假设 user1 同意 user2 所做的更改。

如果用户 1 单击“合并”按钮,我可以看到一个链接,该链接解释了我应该键入哪些 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 在合并请求的情况下不应用相同的行为?

谢谢

【问题讨论】:

  • FETCH_HEAD 是提交的内置 git 别名。
  • 谢谢,但我怎样才能“读取”它的价值?
  • 使用git show
  • 不,它没有给我价值

标签: git gitlab git-merge pull-request


【解决方案1】:

FETCH_HEAD 是指向 git 历史顶部的指针。最近的状态。

【讨论】:

    【解决方案2】:

    对于您的第二个问题,如果两个分支在同一个地方修改了同一个文件,您只会遇到冲突。这是一个冲突,因为git 不知道您真正想要哪个更改。如果您没有进行任何冲突的更改,git 会告诉您,然后您需要使用合并程序来选择要保留的更改。

    您可能没有看到冲突,因为您正在处理不同的部分,并且不存在冲突。

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 2019-04-12
      • 2019-04-18
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2021-06-04
      • 2018-07-05
      • 2019-03-13
      相关资源
      最近更新 更多