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

git 的分支管理详解

Git 的分支管理是其强大功能之一,允许开发者在同一代码库中并行开发多个特性或修复 bug,而不干扰主分支的代码。下面是对 Git 分支管理的详解:

1. 查看分支

  • 查看所有分支
    git branch  # 查看本地分支
    git branch -r  # 查看远程分支
    git branch -a  # 查看本地和远程分支
    

2. 创建分支

  • 创建一个新的分支,并切换到该分支:
    git checkout -b new-branch
    
    或者:
    git branch new-branch  # 创建分支
    git checkout new-branch  # 切换到新分支
    

3. 切换分支

  • 切换到已有的分支:
    git checkout branch-name
    在较新的 Git 版本中,可以使用简化的命令:
    git switch branch-name

4. 合并分支

  • 将某个分支的更改合并到当前分支:

    git checkout main  # 切换到主分支
    git merge new-branch  # 合并 new-branch 分支的内容到主分支
    
  • 解决合并冲突:如果在合并时出现冲突,Git 会提示你哪个文件有冲突。你需要手动编辑冲突的文件,解决后使用:

    git add conflicted-file
    git commit
    

5. 删除分支

  • 删除本地分支:
    git branch -d branch-name
    如果该分支没有完全合并,强制删除可以使用 -D
    git branch -D branch-name
  • 删除远程分支:
    git push origin --delete branch-name
    

6. 跟踪远程分支

  • 创建并跟踪远程分支:
    git checkout -b local-branch origin/remote-branch
    
    或者在较新的 Git 中:
    git switch -t origin/remote-branch

7. 推送本地分支到远程仓库

  • 将新分支推送到远程:
    git push --set-upstream origin new-branch #--set-upstream 或其简写 -u 选项用于将当前分支与远程仓库中的一个分支建立关联
  • 如果是已经存在且建立好关联关系的分支推送到远程,可以直接使用:
    git push
    

8. 分支合并策略

  • Fast-forward 合并:当当前分支是被合并分支的祖先时,Git 会直接把当前分支指向被合并分支,不产生新的合并提交。
  • 非 Fast-forward 合并:当当前分支和被合并分支有各自的提交时,会生成一个新的合并提交来记录合并的历史。
    git merge --no-ff branch-name

9. Rebase(变基)

  • 变基操作可以将一个分支的提交历史“平滑”地应用到另一个分支上,常用于保持历史记录的线性。变基与合并不同,变基会重新写历史:

    git rebase branch-name
  • 如果在变基时遇到冲突,类似于合并冲突的解决过程,解决后继续变基:

    git rebase --continue

10.查看分支与远程仓库分支建立的关联关系

列出所有本地分支,并显示每个分支最后一次提交的信息以及它们所跟踪的远程分支

git branch -vv

 分支管理最佳实践

  • 主分支稳定mainmaster 分支应保持稳定,只有在代码经过充分测试后才合并到主分支。
  • 特性分支:每个功能或 bug 修复应该在一个独立的分支上进行开发,避免影响主分支。
  • 频繁提交和推送:保持分支间的同步,以减少合并冲突。
  • 代码审查和 pull request:在合并前通过 pull request 进行代码审查,以确保代码质量。

Git 的分支管理为团队开发提供了强大的工具,通过合理使用分支,开发者可以高效地管理多个任务,并确保代码的稳定性和可维护性。

http://www.lryc.cn/news/470106.html

相关文章:

  • w003基于Springboot的图书个性化推荐系统的设计与实现
  • 医院信息化与智能化系统(6)
  • 前端学习---(6)js基础--4
  • 241026-RHEL如何以root身份卸载Docker
  • iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出
  • jenkins ssh 免密报错Host key verification failed.
  • 智能科学与技术(一级学科)介绍
  • iOS调试真机出现的 “__llvm_profile_initialize“ 错误
  • Android SELinux——neverallow问题处理(十六)
  • Vue 关于路由
  • 香港海洋投资启动创新海洋牧场,领航全球海洋经济
  • C/C++ 每日一练:二分查找
  • Linux基础IO--重定向--缓冲区
  • Conda 安装与使用指南
  • C++中获取硬盘ID的方法
  • OpenRTP 传输增加OpenRTPServer
  • 使用vue3+cesium+earthsdk+supermap实现通视分析(有版本报错问题)
  • python 轮子是什么
  • 农作物大豆病虫害识别分类数据集(猫脸码客第227期)
  • 如何在算家云搭建GPT-SOVITS(语音转换)
  • ThinkPad T480拆机屏幕改装:便携式显示器DIY指南
  • C++ (8) C++11及更新特性:探索魔法新领域
  • 【vue】Mammoth.js的使用:将.docx和doc 文件转换成HTML
  • HarmonyOS介绍 第一课习题答案
  • c/c++ stdcall cdel fastcall等函数调用约定说明
  • 【ROS概述】概念及环境搭建
  • MongoDB Shell 基本命令(三)生成学生脚本信息和简单查询
  • java核心技术点都有哪些
  • 4404 - 提高:二分与三分:曲线(三分)
  • 软件工程--需求分析与用例模型