gitlab merge方式修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab merge方式修改相关的知识,希望对你有一定的参考价值。
参考技术A Gitlab 在处理提交的 Merge Requests 时,默认情况下是使用正常的merge后在提交一次,相当于 git merge --no-ff但如果要合并的分支 commit 记录比较多的话会使得 master 分支的log 版本会非常多,使用 git log 做追溯的时候比较难抓住重点。
期望master分支内只展示提交 Merge Request 时的描述内容,将全部的 commit 合并成为一条记录,相当于 git merge --squash && git commit
经过各种试验,最终发现gitlab merge 时使用的方法是(根据版本路径可能会稍有不同,我这使用的版本是 GitLab Community Edition 10.7.3 )
找到下面这个文件
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/git/repository.rb
将 rugged_merge 内 option 的配置做如下修改
parents: [our_commit, their_commit] 去掉 their_commit
修改后即为
修改完毕之后记得重启gitlab gitlab-ctl restart
下面就可以测试效果了
比如新建一个分支,并在该分支内提交多次commit。
然后在gitlab上提交如下的 Merge Request
merge 成功后,在master分支使用 git log 查询,最新的一次 commit 记录展示为 在master上展示的内容
git gitlab 使用 提交代码解决冲突
1、更改完代码后,git push 发生错误
注: 此时,使用 git pull: 更新代码,git 会自动merge不同的更新,
a. 如果git 自动merge成功,再进行 git push操作就会成功。
b. 如果git 自动merge失败,使用git status可以查看哪个文件 merge失败,需要手动修改冲突地方,再进行git add git commit操作,之后再git push
But,这种方法提交后,就会在提交记录里显示 merge: *********************,而git rebase就能解决这种问题,解决方法如下
2、git branch mywork: 新建分支(git branch查看所有分支)
此时,修改的内容,在mywork分支里有体现
3、git log: 查看本地提交
4、回退自己的提交(master分支上的,此时mywork分支保留了更改)
a. git reset: 回退自己的提交
b. git checkout: 还原修改的内容
5、git pull: 同步最新代码
6、git checkout mywork: 切换到mywork分支
7、git rebase master: 将master的更新,同步到mywork分支
注: 这一步,是最重要的,git此时会自动merge master分支和mywork分子
a. 如果自动merge成功,就不用管了
b. 如果自动merge失败,此时git status查看哪个文件merge失败,打开该文件,手动修改冲突,执行git add 文件名 -> git rebase --continue
8、git log查看下,分支本地提交
9、git checkout master: 切换到master分支
10、git rebase mywork 把mywork最新代码merge到master
11、git push -u origin 提交。 此时,就不会出现 merger: *******************
12、操作流程图,如下
以上是关于gitlab merge方式修改的主要内容,如果未能解决你的问题,请参考以下文章
GitLab revert 导致新提交 merge 代码丢失(diff丢失)
GitLab revert 导致新提交 merge 代码丢失(diff丢失)