返回顶部
首页 > 资讯 > 精选 >Gitlab中如何优雅的拉取和合并代码
  • 506
分享到

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

2023-07-05 18:07:29 506人浏览 泡泡鱼
摘要

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

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

pull or fetch

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

让我们先来看看一个架构

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

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

  • 工作区(working directory), 简言之就是你工作的区域。对于git而言,就是的本地工作目录。

  • 暂存区(stage area, 又称为索引区index), 是把修改提交版本库前的一个过渡阶段。在工作目录下.git的目录里面有个index文件,存储着关于暂存区的内容。git add命令将工作区内容添加到暂存区。

  • 本地仓库(local repository), 版本控制系统的仓库,存在于本地。当执行git commit命令后,会将暂存区内容提交到仓库之中。.git/objects目录中存放了每一个提交的记录,而在.git/refs目录下存放的是分支信息和tag信息。

  • 远程版本库(remote repository), 与本地仓库概念基本一致,不同之处在于一个存在远程,可用于远程协作,一个却是存在于本地。通过push/pull可实现本地与远程的交互;

  • 远程仓库副本, 可以理解为存在于本地的远程仓库缓存。当使用git fetch拉取远程代码仓库的时候,就相当于在本地有一个远程仓库的副本,你可以选择把这个副本合并到本地仓库中。

从图中可以看出来,当我们使用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的区别了吧。总结一下:

  • git fetch 更安全,更人性化

  • git pull 更激进,破坏性更强

一般的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中如何优雅的拉取和合并代码”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Gitlab中如何优雅的拉取和合并代码

本文链接: https://lsjlt.com/news/354062.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Gitlab中如何优雅的拉取和合并代码
    本文小编为大家详细介绍“Gitlab中如何优雅的拉取和合并代码”,内容详细,步骤清晰,细节处理妥当,希望这篇“Gitlab中如何优雅的拉取和合并代码”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。pull or f...
    99+
    2023-07-05
  • 如何将GitLab上的代码拉取到本地
    GitLab是一个面向团队的Git仓库管理工具,它为开发者提供了一种简单高效的方式来协作开发代码。无论是个人还是团队开发,GitLab都能够满足各种需求。在GitLab上开发代码完成后,我们需要将代码拉取到本地进行测试,然后再进行提交。本文...
    99+
    2023-10-22
  • 如何在GitLab中进行代码审查和合并请求
    如何在GitLab中进行代码审查和合并请求代码审查是一个重要的开发实践,可以帮助团队发现潜在的问题并改善代码质量。在GitLab中,通过合并请求(Merge Request)功能,我们可以方便地进行代码审查和合并工作。本文将介绍如何在Git...
    99+
    2023-10-22
    gitlab 代码审查 合并请求
  • python中如何优雅的合并两个字典
    这篇文章给大家分享的是有关python中如何优雅的合并两个字典的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何优雅的合并两个字典** 操作符可以解包字典,这在合并字典时非常有用,比如:>>>&...
    99+
    2023-06-27
  • 如何写出优雅的JS 代码
    目录变量使用有意义和可发音的变量名对同一类型的变量使用相同的词汇使用可搜索的名字使用解释性变量避免费脑的猜测无需添加不必要的上下文使用默认参数代替逻辑或(与)运算函数函数参数(理想情...
    99+
    2024-04-02
  • 如何在GitLab中管理项目的代码重构和优化
    如何在GitLab中管理项目的代码重构和优化随着软件开发的不断演进,代码重构和优化成为了保证项目质量和性能的重要环节之一。在GitLab这样的代码托管平台上,我们可以高效而有序地管理项目的代码重构和优化。本文将介绍如何利用GitLab的功能...
    99+
    2023-10-24
    代码重构 (Code Refactoring) 代码优化 (Code Optimization) GitLab项目管理
  • 如何借助AngularJS写优雅的代码
    本篇文章为大家展示了如何借助AngularJS写优雅的代码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。接触AngularJS还真有点碰巧,在用JQuery写数据绑...
    99+
    2024-04-02
  • PHP 接口和 JavaScript:如何在 Git 中合并代码?
    Git 是一个非常流行的版本控制系统,它可以让开发者们更加方便地协作开发项目。在 Git 中,合并代码是一个必要的过程。在本文中,我们将探讨如何在 Git 中合并 PHP 接口和 JavaScript 代码。 首先,让我们来看看如何在 G...
    99+
    2023-06-30
    接口 javascript git
  • 如何进行C++代码的优雅异常处理?
    如何进行C++代码的优雅异常处理?在编程过程中,异常处理是一个重要的方面。异常处理可以帮助我们在代码执行过程中处理意外情况,保证程序的稳定性和可靠性。在C++中,异常处理的机制能有效地捕获和处理错误,从而帮助我们优雅地处理异常情况。本文将介...
    99+
    2023-11-02
    异常处理 (Exception Handling) C++编程 (C++ programming) 优雅异常 (Grac
  • 学习ASP框架:如何让你的代码更优雅?
    ASP框架是一种常用的Web开发框架,它可以帮助开发者更加高效地开发Web应用程序。使用ASP框架可以让你的代码更加优雅,提高开发效率,本文将介绍ASP框架的特点和使用方法,帮助你更好地掌握ASP框架。 一、什么是ASP框架? ASP框架...
    99+
    2023-08-05
    框架 教程 学习笔记
  • git如何合并本地仓库的代码
    要合并本地仓库的代码,可以按照以下步骤操作:1. 首先,确保你已经切换到要合并代码的目标分支。可以使用`git branch`命令查...
    99+
    2023-09-16
    git
  • PHP开发中如何优化代码复杂度和耦合度
    在PHP开发中,代码的复杂度和耦合度是我们需要关注和优化的重要问题。高复杂度的代码往往难以理解和维护,而高耦合度的代码则会增加修改和扩展的困难。下面将介绍一些常用的技术和方法来优化代码的复杂度和耦合度,并提供一些具体的代码示例。使用设计模式...
    99+
    2023-10-21
    模块化 代码复杂度 优化:性能 耦合度 代码复杂度:简洁
  • 如何在GitLab中进行代码质量分析和度量
    如何在GitLab中进行代码质量分析和度量引言:在软件开发过程中,代码质量是一个非常重要的指标。良好的代码质量可以确保代码的可维护性、可扩展性和稳定性。而度量代码质量可以帮助团队发现和解决潜在的问题,提升整体的开发效率和质量。本文将介绍如何...
    99+
    2023-10-22
    gitlab 代码质量 度量
  • 如何在GitLab中进行代码托管和版本控制
    如何在GitLab中进行代码托管和版本控制引言:GitLab是一个开源的仓库管理系统,它提供了完整的代码托管和版本控制功能,帮助团队协作开发项目。本文将介绍如何在GitLab中进行代码托管和版本控制,以及提供一些具体的代码示例。一、GitL...
    99+
    2023-10-22
    gitlab 版本控制 代码托管
  • ASP Web部署的艺术:如何写出优雅高效的代码
    编写可重用组件 可重用组件可以极大地提高开发效率和代码的可维护性。ASP提供了许多内置组件,如ASP.NET Web Forms和ASP.NET MVC,这些组件可以用于构建各种Web应用程序。此外,还可以创建自己的自定义组件,以满...
    99+
    2024-02-21
    ASP Web部署 代码优化 组件 缓存 数据库查询
  • 如何在GitLab中进行代码样式检查和规范化
    如何在GitLab中进行代码样式检查和规范化代码的风格和规范对于团队项目的开发非常重要。统一的代码规范可以提高代码的可读性、可维护性和可扩展性,减少潜在的Bug和错误。而在团队开发中,通过使用版本控制工具如GitLab来管理项目代码,可以方...
    99+
    2023-10-25
    gitlab 规范化 代码样式检查
  • PHP的获取器和修改器:如何优化代码的读取和修改功能
    PHP的获取器和修改器:如何优化代码的读取和修改功能在面向对象编程中,获取器(getter)和修改器(setter)是很常见的概念,特别是在PHP中。它们允许我们规范化对类属性的访问,增加代码的可维护性和灵活性。在本文中,我们将探讨如何使用...
    99+
    2023-12-23
    PHP 修改器 获取器
  • 如何在vscode中debug python代码,包括如何优雅地传入多个参数
    Visiul Studio Code, 简称vscode,是一款轻量级代码编辑器,其丰富的扩展程序使得其可以方便地作为任何语言的编辑器。 本文将讲述如何在vscode中对python脚本文件进行deb...
    99+
    2023-09-04
    vscode python
  • 什么是接口?如何在PHP中使用接口编写优雅的代码?
    什么是接口?如何在PHP中使用接口?本篇文章带大家聊聊使用接口编写更优雅的 PHP 代码,希望对大家有所帮助!在编程中,确保代码可读、可维护、可扩展和易于测试是很重要的;而使用接口,恰恰是我们改进代码中所有这些因素的方法之一。目标读者本文的...
    99+
    2022-08-08
    php 接口
  • Go日志和Django并发处理:如何在代码中进行优化?
    在现代软件开发中,优化代码的性能是非常重要的。在这篇文章中,我们将讨论如何在Go日志和Django并发处理中进行优化。 一、Go日志优化 Go是一种高性能的编程语言,使用它的日志模块可以记录系统信息和调试信息。但是,在处理大量请求时,日志...
    99+
    2023-08-24
    日志 并发 django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作