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

【Git】版本控制-Gitee

Git 介绍

Git 是一个分布式版本控制系统,主要用于高效管理各种规模的项目代码。与集中式版本控制系统(如 SVN)不同,Git 无需依赖中央服务器,每个开发者的本地仓库都包含完整的代码历史,可离线工作。

核心特点

  1. 分布式架构每个开发者拥有完整仓库,支持离线操作
  2. 版本快照保存文件完整快照而非差异
  3. 分支管理轻量级分支操作,支持并行开发
  4. 数据完整性通过 SHA-1 哈希确保数据不被篡改
  5. 高效性能对大型项目操作依然快速

基本概念

  • 工作区(Working Directory)本地可见的项目文件目录
  • 暂存区(Staging Area)临时存放即将提交的变更
  • 本地仓库(Local Repository)存储所有版本历史的数据库
  • 远程仓库(Remote Repository)托管在网络上的共享仓库

常用命令

# 初始化仓库
git init# 克隆远程仓库
git clone <url># 查看文件状态
git status# 添加文件到暂存区
git add <file>  # 添加指定文件
git add .       # 添加所有变更# 提交变更到本地仓库
git commit -m "提交说明"# 查看提交历史
git log# 推送本地变更到远程仓库
git push origin <branch># 拉取远程仓库更新
git pull origin <branch>

Gitee 介绍

Gitee(码云)是国内知名的代码托管平台,类似于 GitHub,但服务器位于国内,访问速度更快,更符合国内开发者习惯。

主要特点

  1. 本土化服务国内服务器,访问速度快,无需科学上网
  2. 代码托管支持 Git/SVN 版本控制,免费提供私有仓库
  3. 协作功能支持 Pull Request、Issue、代码评审等协作流程
  4. DevOps 工具集成 CI/CD、代码质量分析等工具
  5. 企业服务提供企业级私有部署和团队协作解决方案

优势

  • 适合国内团队协作,避免跨境网络问题
  • 提供中文界面和文档,降低使用门槛
  • 与国内开发工具(如 VS Code、IDEA)有良好集成
  • 提供免费的私有仓库(有数量限制)

代码上传到 Gitee 的方法

VS Code 上传 Gitee(前后端通用)

步骤

  1. 安装 Git 并配置

    git config --global user.name "你的用户名"
    git config --global user.email "你的邮箱"
    
  2. 在 Gitee 创建仓库

    • 登录 Gitee,点击右上角 "+" 号,选择 "新建仓库"

    • 填写仓库名称,选择是否公开,点击 "创建"  

    • 复制这个远程仓库访问地址:

  3. 在编译器中操作(根据Gitee的步骤即可)

    • 打开终端:Ctrl + ` (VS code)或 左侧侧边栏点击终端 (IDEA)
    • 初始化仓库(如未初始化):git init
    • 添加远程仓库:git remote add origin Gitee仓库地址(上面的地址)
    • 验证关联是否成功: git remote -v
    • 添加文件到暂存区(选择需要提交的文件,. 表示所有文件):git add . 

    • 提交变更:输入提交信息,点击对勾或使用命令: git commit -m "首次提交"
    • 推送到远程:点击 "推送" 按钮或使用命令 git push -u origin master(首次推送需要加 -u

推送完成:

重启后代码正常管理:

开发中分支管理与操作

分支策略建议

  • main/master:主分支,保持稳定可发布版本
  • develop:开发分支,集成各个功能分支
  • feature/*:功能分支,如 feature/login
  • bugfix/*:修复分支,如 bugfix/error-handle
  • release/*:发布分支,如 release/v1.0

常用分支操作命令

# 查看所有分支
git branch                  # 本地分支
git branch -r               # 远程分支
git branch -a               # 所有分支# 创建新分支
git branch <branch-name># 切换分支
git checkout <branch-name>
# 或(Git 2.23+)
git switch <branch-name># 创建并切换到新分支
git checkout -b <branch-name>
# 或(Git 2.23+)
git switch -c <branch-name># 合并分支(当前分支合并目标分支)
git merge <branch-name># 推送本地分支到远程
git push -u origin <branch-name># 删除本地分支
git branch -d <branch-name># 删除远程分支
git push origin --delete <branch-name>

协作流程示例

  1. 从 develop 分支创建功能分支:git switch -c feature/payment develop
  2. 在功能分支开发并定期提交
  3. 功能完成后,切换到 develop 分支:git switch develop
  4. 拉取最新代码:git pull origin develop
  5. 合并功能分支:git merge feature/payment
  6. 解决冲突后推送:git push origin develop

Git 冲突解决

当多人修改同一文件的同一部分时,Git 无法自动合并,就会产生冲突。

解决步骤

  1. 发现冲突执行 git pull 或 git merge 时,Git 会提示冲突文件

  2. 查看冲突文件冲突部分会被特殊标记包围:

    <<<<<<< HEAD
    你的修改内容
    =======
    其他人的修改内容
    >>>>>>> 分支名
    
  3. 解决冲突

    • 手动编辑文件,决定保留哪些内容,删除冲突标记(<<<<<<<=======>>>>>>>
    • 在 VS Code 中可以使用 "接受当前更改"、"接受传入更改"、"接受两者更改" 等快捷按钮
  4. 完成解决

    # 标记为已解决
    git add <冲突文件># 完成合并提交
    git commit -m "解决合并冲突"# 推送结果(如需要)
    git push origin <branch-name>
    

冲突预防建议

  • 经常拉取(pull)最新代码,减少冲突可能性
  • 小步提交,频繁集成
  • 团队成员分工明确,避免多人同时修改同一文件
  • 使用 .gitignore 文件排除不需要版本控制的文件(如依赖、配置文件)

文章转载自:

http://1sc7tYWg.zrrgx.cn
http://8Z434xre.zrrgx.cn
http://mEfrzLg2.zrrgx.cn
http://8yVK52AE.zrrgx.cn
http://l86exYfx.zrrgx.cn
http://iaKXXBOt.zrrgx.cn
http://H3pnd6fj.zrrgx.cn
http://EVLMD5Rk.zrrgx.cn
http://wFVWwPnl.zrrgx.cn
http://mHwYkBOM.zrrgx.cn
http://eKHZMcxz.zrrgx.cn
http://84tk1ogu.zrrgx.cn
http://raUjOzTK.zrrgx.cn
http://NfSkaSx0.zrrgx.cn
http://dgvaHQKI.zrrgx.cn
http://xke0FfVZ.zrrgx.cn
http://cWhN85C7.zrrgx.cn
http://WZQHmoP7.zrrgx.cn
http://GDck7wI1.zrrgx.cn
http://lxf29Ulx.zrrgx.cn
http://Snu8aRLj.zrrgx.cn
http://8DBhx8Vw.zrrgx.cn
http://4dn2tZUT.zrrgx.cn
http://IVoEYFOU.zrrgx.cn
http://odKpqi8i.zrrgx.cn
http://AqPZ0psz.zrrgx.cn
http://Gy7QV8Gj.zrrgx.cn
http://4luHha58.zrrgx.cn
http://MFuiwwjB.zrrgx.cn
http://VB0RyXSq.zrrgx.cn
http://www.dtcms.com/a/379249.html

相关文章:

  • Qt常见问题
  • 泛函Φ(u)驻点的方程与边界条件 / 求给定泛函驻点满足的方程及边界条件
  • 统一权限管理平台登录不了怎么办?
  • 中级统计师-统计法规-第四章 统计管理体制
  • java反射(详细教程)
  • 【Leetcode】高频SQL基础题--1327.查找拥有有效邮箱的用户
  • Redis(集群)
  • 吾爱小工具!一键屏蔽流氓软件!
  • 告别网络监控“盲区”!OpManager全新升级解锁轻量监控新纪元!
  • 实验室试管架 | 塑料、金属等多种材质与规格 | 支持多种试管尺寸 | Sigma-Aldrich
  • .net 类库生成的DLL源码混淆加密
  • 北京-测试-入职金融公司第四周-加班&未发现bug
  • Story2Board: A Training-Free Approach for Expressive Storyboard Generation论文
  • 纯`css`轻松防止滚动穿透
  • 30天Java速成计划:从零基础到能刷算法题!
  • 【点云分类】简述对pointnet和pointnet++的理解
  • 【202509新版】Hexo + GitHub Pages 免费部署个人博客|保姆级教程
  • PigX整合knife4j
  • 安全审计-Ubuntu防火墙ufw
  • 编译器的相关知识(入门时著)
  • 开始 ComfyUI 的 AI 绘图之旅-Flux.1 ControlNet (十)
  • 企业微信内部应用js-sdk使用流程
  • Java Spring Boot常见异常全解析:原因、危害、处理与防范
  • Qt加载百度地图详细流程(附带报错解决方法)
  • 3D渲染时GPU内存不足解决措施
  • MySQL什么操作会加锁?
  • 中州养老:华为云设备管理接口开发全流程
  • 探讨图片以Base64存数据库的合理性
  • MoonBit 再次走进清华:张宏波受邀参加「思源计划」与「程序设计训练课」
  • RabbitMQ如何实现消息的持久化?