当前位置: 首页 > news >正文

GitLab 公共仓库:coding 用到的 git 命令

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

一、单个命令讲解

1. 拉取代码

(1)git clone [仓库 URL]‌

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

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

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

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

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

2. 分支操作

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

  • 切换到指定分支(如 main、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               # 将本地提交“移动”到最新 main 上

2. 整理提交历史

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

# 合并/编辑提交
git rebase -i main
http://www.dtcms.com/a/302607.html

相关文章:

  • PhpStorm + PHP8.1 + XDebug3 实现断点调试(亲测可用)
  • gitlab 在线合并分支a-分支b,解决冲突后,反向合并分支b-分支a
  • Vue 3 拖拽排序功能优化实现:从原理到实战应用
  • 8.1 ESP32CAM 服务器 网络摄像头
  • 本地大语言模型部署指南
  • TRIZ(5)——发明原理(3)
  • NVDB-CAVD 杯汽车信息安全系列赛事
  • 青少年编程中阶课
  • 【昆泰Chrontel CH7517A:DP转VGA】
  • Datawhale AI夏令营——列车信息智能问答——科大讯飞AI大赛(基于结构化数据的用户意图理解和知识问答挑战赛)
  • 在App Store Connect上编辑多个用户的访问权限
  • 医疗人工智能高质量数据集和语料库建设路径探析
  • 开始记录一步步学习pcl
  • Rust 最短路径、Tide、Partial、Yew、Leptos、数独实践案例
  • SpringCloud01——项目演变、微服务远程调用三种方式、springcloud介绍、nacos注册中心
  • 嵌入式开发学习———Linux环境下数据结构学习(四)
  • openlayer根据不同的状态显示不同的图层颜色
  • Java项目接口权限校验的灵活实现
  • AI学习之Cursor项目实战
  • ICPC 2024 网络赛(I)
  • 【大模型LLM】梯度累积(Gradient Accumulation)原理详解
  • linux I2C设备AW2013驱动示例
  • rhel网卡配置文件、网络常用命令、网卡名称优化和模拟不同网络区域通信
  • 服务器中的防火墙设置需要打开吗
  • 服务器查日志太慢,试试grep组合拳
  • 利用frp实现内网穿透功能(服务器)Linux、(内网)Windows
  • CentOS7 安装和配置教程
  • RF随机森林分类预测+特征贡献SHAP分析,通过特征贡献分析增强模型透明度,Matlab代码实现,引入SHAP方法打破黑箱限制,提供全局及局部双重解释视角
  • 论文:M矩阵
  • 高可用集群Keepalived、Redis、NoSQL数据库Redis基础管理