【发布时间】:2018-06-14 20:28:27
【问题描述】:
我正在使用 gitlab。
首先,我没有在 gitlab 上找到“Pull Request”功能。我想这被命名为“合并请求”?
这是我想了解的:
假设我们有一个名为 project1 的项目。本项目为公共gitlab项目,由user1编写。
现在,假设我们有一个贡献者 (user2),他想要更改 project1 的某些内容。 以下是 user2 应该执行的步骤:
- fork project1,在 gitlab web 界面中(Fork 按钮)
- 在他的本地计算机上克隆分叉项目。
- 创建一个分支 (brtest)
- 编写或更改源代码文件
- 提交更改
- 将 brtest 推送到分叉项目中
- 在 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