在公司的 gitlab 公共仓库中写代码做项目时,主要涉及以下常用 git 命令:

一、单个命令讲解

1. 拉取代码

(1)git clone [仓库 URL]‌

  • 克隆远程仓库到本地(需确保 URL 正确) ‌

(‌2)git pull [远程仓库名] [分支名]‌

  • 从远程仓库拉取最新代码(默认拉取 origin 仓库的 master 分支)

(3)git fetch [远程仓库名] [分支名]‌

  • 仅下载远程分支更新,不自动合并

2. 分支操作

(‌1)git checkout [分支名]‌

  • 切换到指定分支(如 master、develop 等)

  • 加选项“-b”即创建并切换到该分支

(‌2)git switch [分支名]‌

  • 切换分支(仅 Git 2.23+ 版本支持)

(‌3)git branch [新分支名]‌

  • 创建并切换到新分支(如 feature-branch)

(4)git merge [分支名]

  • 将指定分支的代码合并到当前分支

3. 代码管理

(1)git init

  • 初始化一个新的 git 仓库

  • 进入到目标文件夹,运行该命令在当前文件夹下创建一个 .git 文件夹,作为 git 的仓库

(2)git pull

  • 更新本地仓库,将远程仓库的改动拉取到本地

  • 运行该命令命令更新本地仓库,并将远程仓库的改动拉取到本地

(‌3)git status‌

  • 查看本地仓库状态(是否需要提交、是否存在冲突等)

  • 运行该命令可以查看项目下存在改动的所有文件

(4)git diff [文件名]

  • 查看指定文件的详细的修改内容

(‌5)git add [文件名/目录]‌

  • 将文件添加到暂存区

  • 建议每次检查完某个文件单独执行 add,避免只用“add .”批量执行操作

(‌6)git commit -m "描述信息"‌

  • 提交暂存区的代码(需配合 add 命令一起使用)

  • “描述信息”:提炼出本次提交的关键信息即可

(7)git push -u origin [分支名]

  • 将本地仓库的改动推送到远程仓库

  • 建议推送到自己的分支上,避免影响公共仓库

  • -u 选项:建立本地分支与远程分支的跟踪关系

(8)git log

  • 查看提交历史记录

4. 冲突处理

(‌1)git rebase‌

  • 将本地提交重新排列到远程分支最新提交之上(保持线性历史)

(2)git merge [远程分支]‌

  • 合并远程分支到当前分支(保留合并记录)

5. 团队协作

(1)git fetch‌

  • 更新本地跟踪的远程分支信息(不自动合并)

(‌2)git log --graph‌

  • 查看分支合并历史(辅助团队协作排查问题)

6. 注意事项

  • 确保使用公司网络环境可访问仓库

  • 避免在公共分支执行 rebase 操作(可能破坏他人提交历史)

  • 定期使用 git fetch 更新远程跟踪分支信息

二、常用演示示例

  • “张三”在某公司的公共代码仓库中进行项目的开发,该仓库的主分支(主干)假设为“master”:

# 若是第一次开发,则需从仓库中克隆代码到本地
git clone git@git.abcd.ef:gh/test.git
# git@git.abcd.ef:gh/test.git 为仓库的 URL# 仓库为公共仓库,故需要创建自己的开发分支,不可在主分支 master 进行开发
git checkout -b zhangsan
# 把自己本地的分支推送到远程仓库
git push origin zhangsan# 查看当前仓库的所有分支(本地的)
git branch
# 切换到其他的分支,假设本地有另一个分支 zhangsan01
git checkout zhangsan01# 若非第一次开发,即之前已经将代码克隆到本地了,需要在开发前拉取仓库的最新代码,方可进行开发(因为公共仓库存在已经有人提交过最新代码的可能性)
git pull
git pull origin master
# 以上两个命令看情况使用,判断有无跟踪关系# 完成代码开发后,提交之前进行检查
git status
git diff [文件名]# 检查无误后,再进行暂存(建议文件需要逐个检查,逐个暂存,不建议批量)
git add [文件名]# 完成所有修改文件的暂存后,方可进行提交
git commit -m [zhangsan coding]# 最后推送到远程的自己的分支
git push -u origin zhangsan
# 最后再 gitlab 上检查完后,发送 merge 请求(若无权限审批该请求,找有权限的人即可)
  • 上述经历根据个人经历而言,仅供参考

三、补充 - rebase 情况

  • 首先要注意使用 rebase 的场景:未共享给他人的个人分支

  • 在为期较长时间的代码开发过程,每天开发前使用一遍 rebase 可让合并简单化

  • 建议:在最后合并 CI 之前,再进行一遍 rebase

1. 个人分支

  • 目的:保持分支 zhangsan 与主分支 master 同步,避免最终合并时冲突

# 每天开始工作前:
git checkout master
git pull origin master          # 拉取最新代码
git checkout zhangsan
git rebase master               # 将本地提交“移动”到最新 master 上

2. 整理提交历史

  • 如果 zhangsan 分支上有大量琐碎提交(如“fix typo”等),可以通过交互式 rebase 整理

# 合并/编辑提交
git rebase -i master

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916966.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916966.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916966.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【28】C# WinForm入门到精通 ——多文档窗体MDI【属性、方法、实例、源码】【多窗口重叠、水平平铺、垂直平铺、窗体传值】

文章目录1多文档窗体MDI2 基本设置3 实例:多窗口重叠、水平平铺、垂直平铺3.1 主窗口属性设置3.2 主窗口3.3 主窗口窗口添加MenuStrip菜单3.4 添加处理函数3.5 测试效果4 利用窗体参数定义进行传值4.1 在Form2、Form3添加相关控件4.2 Form3 定义函数public Form3(st…

【计算机科学与应用】基于Session欺骗攻击的Web应用程序防护

导读: 本文对Web应用程序开发中的Session欺骗攻击进行了阐述,详细讲解了防范Session欺骗攻击的三种传统方法,并给出了防范代码,分析了三种传统防范方法的不足,新设计了一种通过Referer信息验证来加强对Session欺骗的防…

yolo8+阿里千问图片理解(华为简易版小艺看世界)

✅ 实现目标 按下空格键 → 获取摄像头当前画面; 将图片上传给 大模型 接口,让其“看图说话”; 获取返回描述后,以字幕形式展示在图像画面上; 持续显示识别结果,直到下次按空格。 🧠 需要准…

【ee类保研面试】数学类---线性代数

25保研er,希望将自己的面试复习分享出来,供大家参考 part0—英语类 part1—通信类 part2—信号类 part3—高数类 part100—self项目准备 文章目录线性代数知识点大全**1. 余子式与代数余子式****2. 行列式的含义****3. 矩阵的秩(Rank&#xf…

在 Scintilla 中为 Squirrel 语言设置语法解析器的方法

Scintilla 作为一个强大的开源文本编辑控件,通过配置语法解析器,能够对多种编程语言实现语法高亮、代码折叠等实用功能。若要为新语言 Squirrel 设置语法解析器,可参考以下步骤:​创建 Lexer 源文件:Scintilla 通过 Le…

Go语言核心知识点补充

Go语言核心知识点补充 make函数、for循环与输入处理详解 在前几章的内容中,我们介绍了Go语言的基础语法、变量声明、切片、循环等核心概念。但在实际开发中,一些细节性的知识点往往决定了代码的健壮性与效率。 本文将针对前几章涉及到的变量声明与初始化…

AI服务器中,EEPROM有哪些部件使用,需要存储哪些信息?

在AI服务器中,EEPROM(电可擦可编程只读存储器)主要用于存储关键组件的配置数据、身份信息和校准参数。以下是主要组件及其存储内容: 一、核心组件及存储数据主板(Baseboard Management Controller, BMC) FR…

It学习资源下载

一.UI 8个高质量UI设计网站,灵感收集必备!

Docker Compose :从入门到企业级部署

Docker Compose :从入门到企业级部署1. Docker Compose 核心概念1.1 Compose 架构全景图2. 完整开发工作流2.1 典型开发流程2.2 多服务示例项目结构3. 核心配置详解3.1 服务配置矩阵3.2 网络拓扑示例4. 企业级部署方案4.1 多环境配置管理4.2 扩展部署架构5. 高级技巧…

1.2.vue插值表达式

在 Vue.js 中,插值表达式是用于在模板中显示数据的一种方式。它使用双大括号语法 {{ }} 来包裹需要输出的变量或表达式的值。Vue 会自动将这些表达式的值插入到 HTML 文档中相应的位置。插值表达式基本用法最基本的插值表达式形式就是直接在模板中引用 Vue 实例中的…

Python数据处理基础(学习笔记分享)

Python数据处理入门 常用库学习 numpy NumPy(Numerical Python) 是 Python 中用于高效数值计算的库,核心是提供一个强大的 ndarray​(多维数组)对象,类似于 C/C 中的数组,但支持更丰富的操作&a…

力扣面试150题--颠倒二进制位

Day 89 题目描述思路 二进制的算法,将十进制转化为二进制,有一点需要注意,直接采取库函数转化为二进制再反转会出现问题(这也是为什么我要补0的原因),因为转化过去不满足32位的二进制,前面不会当…

【ResNet50图像分类部署至RK3588】模型训练→转换RKNN→开发板部署

已在GitHub开源与本博客同步的ResNet50v2_RK3588_Classificationt项目,地址:https://github.com/A7bert777/ResNet50v2_RK3588_Classification 详细使用教程,可参考README.md或参考本博客第八章 模型部署 文章目录一、项目回顾二、模型选择介…

C# _泛型

目录 泛型是什么? 泛型的主要优势 创建一个泛型类 泛型方法 泛型是什么? 泛型是通过参数化来实现同一份代码上操作多种数据类型 利用参数类型将参数的类型抽象化 从而实现灵活的复用 总结: 通过泛型可以实现在同一份代码上操作多种数据类型的逻辑 将类和类中的成员定义…

Vue路由钩子完全指南

Vue.js中的路由导航钩子(Navigation Guards)主要用于在路由导航过程中进行拦截和处理,确保访问控制和状态管理。以下是主要分类及使用方法: 1. 全局钩子函数 作用于整个路由实例,需在路由配置外定义: befor…

RAGFlow 登录界面点击登录无反应,控制台报错 502 Bad Gateway 解决方法

遇到的问题 在使用RAGFlow的时候,登录不进去,但是之前能登录。 还出现了输入地址直接进入工作界面,但是进行不了任何操作的bug;以及无法上传文档的问题(其实都是因为没登录)。 登陆界面报错如图显示。 …

数据结构第3问:什么是线性表?

线性表 线性表由具有相同数据类型的n个元素构成,这些元素之间存在一一对应的线性关系。其中n为表长,当n0的时候线性表是一个空表。简单来说,线性表中的元素排列成一条线,每个元素最多有一个直接的前驱和后继(除第一个和…

常见CMS 靶场复现

一、wordpass1.修改模版文件getshell搭建网站登录网站后台更改网站模版的相关文件写入一句话木马凭借路径访问/wp-content/themes/twentyfifteen/404.php/?aphpinfo();2.上传夹带木马的主题getshell外观-->主题-->添加-->上传-->浏览-->安装-->访问木马文件…

Elasticsearch - 倒排索引原理和简易实现

倒排索引的功能设计倒排索引(Inverted Index)是一种高效的数据结构,常用于全文搜索和信息检索系统。它的核心思想是将文档中每个关键字(term)与包含该关键字的文档列表进行映射。以下是实现倒排索引功能的设计步骤和代…

C#开发的Panel里控件拖放例子 - 开源研究系列文章

上次写了Panel的分页滚动控件( C#开发的Panel滚动分页控件(滑动版) - 开源研究系列文章 - Lzhdims Fashion - 博客园 ),但是主要是想写一个Panel里控件拖放的效果,然后分页控件用于Panel里控件的分页。此文这次写的是控件拖放效果…