文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Gitlab中如何优雅的拉取和合并代码

2023-07-05 18:20

关注

本文小编为大家详细介绍“Gitlab中如何优雅的拉取和合并代码”,内容详细,步骤清晰,细节处理妥当,希望这篇“Gitlab中如何优雅的拉取和合并代码”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

pull or fetch

拉取代码的操作有两种形式,git pullgit fetch,那么这两种有什么区别呢?

让我们先来看看一个架构图

Gitlab中如何优雅的拉取和合并代码

图中展示一个完整的git流程,为了更清晰的了解每个区域,我们下来解释一下他们的功能:

从图中可以看出来,当我们使用git pull拉取代码的时候,是直接合并到了本地分支,而使用git fetch拉取代码的时候,会先在本地生成一个远程仓库的副本,然后使用git merge或者git rebase合并到本地分支。

既然能直接git pull何必多次一举呢?试想一个场景,当你想合并别人的代码,又不知道人家改了什么东西,是否能够跟你代码合并到一起,这时候通过git fetch就能很轻易的实现。git fetch以后实际并不会立马跟本地分支立马合并,在git fetch以后,会显示如下图:

Gitlab中如何优雅的拉取和合并代码

上图显示了远程新增了一个test2分支,在test分支上多了个一个提交信息,这时候在.git/refs/remotes/origin目录下可以看到多了一个test2分支。

使用git log origin/test,可以查看具体的提交信息

Gitlab中如何优雅的拉取和合并代码

如果想查看提交的内容是啥,只能通过新建一个分支,

git checkout -b test-origingit merge test

讲到这里,相信你已经明白了git pullgit fetch的区别了吧。总结一下:

一般的Leader在管理项目的时候都是习惯性的使用git fetch查看最近新增了哪些分支,做了哪些修改,从而对项目做出更好的把控。

merge or rebase

上面提到的合并操作,一般我们直接是通过git merge <分支名>去合并某个分支的代码。先看看直接使用git merge的问题,有一条看着很不顺眼的Merge branch信息,如下图所示:

Gitlab中如何优雅的拉取和合并代码

下图是合并后的一个流程图,当我们在main分支拉一个dev进行开发,这时候两个分支都有提交记录,当我们合并的时候,正常情况应该是在main的基础上,直接合并,而不是多了一个C7的提交信息,也就是上面提到的Merge branch,这显然是一个很不合理的现象(当然这也不影响git正常工作)。

Gitlab中如何优雅的拉取和合并代码

那如何解决这个现象导致的问题呢?答案就是git rebase,俗称变基。

下面我们先来看看变基以后git分支是什么样的了

Gitlab中如何优雅的拉取和合并代码

可以看到,当dev分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。

示例操作

上面讲了这么多,现在让我们来实际操作一下。

场景:远程有一个main分支上有内容更新,现在我们需要把更新的内容合并到本地dev分支上,然后push到远程dev分支,当前分支实在dev分支。

简单实现(就是很朴实无华):

# 拉取main分支代码git fetch origin main# 合并到devgit rebase origin/main

上面的git rebase还有个快捷的操作,直接一行命令搞定

# 拉取test分支代码合并到devgit pull --rebase origin test

如果你不想每次都添加rebase,可以在终端中输入下面的命令:

git config --global pull.rebase true

这个配置就是告诉git在每次pull前先进行rebase操作

其他命令参考

# 查看本地分支git branch# 查看远程分支git branch -r# 查看所有分支git branch -a# 拉取所有远程分支代码git fetch # 拉取origin源上所有分支代码git fetch origin# 拉取orign源上main分支代码git fetch origin main# 拉取远程分支到新建的一个本地分支并git checkout -b newBrach origin/master# 合并远程分支到本地git pull --rebase origin master# 查看提交日志git log --oneline# 查看某个人提交的日志git log --author=xiumubai --oneline# 查看某个文件提交的记录git blame README.md# 查看某次提交的内容git show <commitid># 查看最近几次的提交git log -p -n

读到这里,这篇“Gitlab中如何优雅的拉取和合并代码”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯