Git入门 -- 分支

Git入门 -- 分支

1.分支理解

1.1 主分支

在初始化一个Git项目后,默认只有一个分支(master)。主分支表示项目的稳定版本,其中应该包含无Bug的稳定代码,并且保持随时可以发布的状态。

1.2 功能分支

当项目需要开发新的功能时,应该创建一个新的功能分支。创建分支时,新分支默认指向的代码提交版本为当前分支所指向的代码提交版本。

1.3 关系

分支保证开发者可以在主线(master)之外进行开发工作,并且不影响主线代码。因为主线和分支是两个独立的代码线,这样,你可以在一个分支上尝试新功能、修复bug或进行其他任何类型的开发,而不必担心破坏主线的稳定性。

2.创建分支

2.1 创建主分支

对于个人项目来说 一个主分支就够用,在每次提交时创建一个commit节点

复制代码
$ git commit -m "节点名"

2.2 创建功能分支

项目有新的功能需要开发时,应该先创建功能分支,并切换到该分支

复制代码
$ git checkout -b [分支名]

3.合并

3.1 介绍

git merge一共有三种模式 git merge --ff, git merge --no-ff, git merge --ff-only

  • --ff自动合并:当合并的分支为当前分支的后代,会自动执行--ff,若不匹配则执行--no-ff合并。
  • --no-ff非Fast-forward模式:在任何情况下都会创建新的commit多方合并(即使被合并的分支为自己的直接后代)。
  • --ff-only:只会按照 Fast-forward 模式进行合并,如果不符合条件(并非当前分支的直接后代),则会拒绝合并请求并且退出。

3.2 快速合并

当前分支开发完成后需要合并到主分支,通过提交命令直接向主分支提交代码

复制代码
$ git checkout master #切换至主分支
$ git merge [分支] #将开发的分支合并到主分支

3.3 非快速合并

在进行非快速合并时,需要创建commit节点

复制代码
$ git merge --no-ff [分支名]

4.Git冲突解决

4.1 冲突发生

当同一个文件被两个分支修改过,在合并这两个分支时就会发生冲突。

4.2 冲突修正

  • 将两个分支文件进行对比修改,满足两个分支的提交。
  • 使用 git addgit commit进行提交(此时提交的是master分支)。
  • 再次合并

5. BUG分支

5.1 描述

开发者在某个分支上工作,突然有一个紧急BUG需要修复,此时需要使用stash功能,先将当前正在工作的现场存储起来,等BUG修复后再继续工作。

5.2 操作流程

  • 存储工作现场

    git stash

  • 切换至BUG分支

    git checkout [出现bug的分支]

  • 添加一个BUG临时分支

    git checkout -b bug01

  • 修复完成后切换回主分支

    git checkout master

  • 合并BUG分支到主分支

    git merge --no-ff -m '分支合并' bug01

  • 返回之前工作现场

    git checkout dev

  • 查看当前分支保存那些工作现场(之前封冻存储的工作现场)

    git stash list

  • 恢复存储现场

    git stash pop

相关推荐
向上的车轮9 小时前
SVN与GIT的区别,分别使用与哪些管理场景?
git·svn
java叶新东老师9 小时前
git 提交时排除一个或多个文件
大数据·git·elasticsearch
我会冲击波17 小时前
功能分支落后于develop太多,需要把开发分支合并到功能分支吗?
git·intellij idea
C++ 老炮儿的技术栈1 天前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio
余很多之很多1 天前
命令行和neovim的git操作软件-lazygit
git
猫头虎2 天前
GitHub下载教程:2025年最新详解从GitHub上传、下载文件、子目录与完整项目【图文教程】
git·svn·gitee·开源·github·gitea·gitcode
i建模2 天前
将远程 main 分支同步到 develop 分支的完整指南
git
即使再小的船也能远航2 天前
【Git】实用Git操作指南:从入门到高效协作
git
<但凡.3 天前
Git 完全手册:从入门到团队协作实战(4)
git·bash
SugarPPig3 天前
Git 创建一个完全没有提交历史的 master 分支
git