一、什么是分支

1.在版本控制系统(如Git)中,分支(Branch)是代码库的不同线路或路径,用于同时进行不同的开发工作。分支可以将代码库的状态 ‘‘复制’’ 到一个独立的环境中,使得在这个分支上进行的更改不会影响到其他分支。

2.使用分支的好处是可以同时进行多个并行的开发任务,每个任务都在自己的分支上进行。这样可以有效地隔离不同的功能开发、修复bug或其他任务,而不会互相干扰。完成一个任务后,可以将该分支的更改合并回主分支(通常是"master"或"main"分支),从而将新功能或修复应用到代码库的主干中。

3.分支让开发团队能够更灵活地管理代码的开发和发布过程。它们可以同时处理多个功能或任务,并且在开发过程中可以频繁地创建、合并和删除分支,以适应不同的开发需求。

4.在分支内部,所有与该分支相关的更改都是相对独立的,因此可以在不影响其他分支的情况下进行实验、测试和修改。分支也有助于团队合作,因为不同的开发人员可以在各自的分支上独立工作,而不会相互干扰。

5.总之,分支是版本控制系统中的一个重要概念,它提供了并行开发、隔离工作和代码管理的机制,使得团队能够更加高效地协同工作和管理代码库。

  • 总结:分支就是基于主支创建出来的一个"副本"(不是简单复制),在分支上修改的内容不会直接影响主支,且各个分支的内容相互独立。在分支上更新调试好后在将分支与主支合并,完成更新。分支只存放修改和更新的内容,而与主支一样的内容会直接引用。

  • 内容补充:
    在 Git 中,创建分支并不是将代码库的完整副本复制一份,而只是创建了一个指向特定提交(commit)的指针。实际上,在创建分支时,Git 仅仅创建了一个新的指针,该指针指向当前所在分支的最后一个提交(commit)。这样,新分支就可以独立地进行新增、修改和删除文件操作,而不会影响其他分支。由于 Git 使用的是基于快照(snapshot)的版本控制系统,每次提交(commit)都会记录项目的状态,因此创建新的分支并不需要复制整个代码库的副本。分支间共享大部分历史提交(commits),只有新分支上的更改会产生新的提交记录。因此,通过创建分支,您实际上是在给定的提交(commit)上创建了一个新的指针。这使得在不同的分支之间进行切换、合并和处理独立的开发任务变得非常高效和灵活。

二、相关命令

  • 查看分支

    git branch

  • 创建分支

    git branch 分支名

  • 删除分支

    git branch -d 分支名

  • 切换分支

    git checkout 分支名称

  • 分支合并(可能会产生冲突,需要手动解决)

    git merge 合并分支的名称
    注意:切换分支在合并,会合并到自己所在分支

  • 查看远程分支

    git branch -r

  • 推送并创建远程分支

    git push origin 分支名字

  • 将远程分支的内容拉回本地

    git pull origin 分支名字

  • 删除远程分支

    git push origin --delete 分支名字

三、简单实例演示

  • 只在本地仓库演示:

1. 新建一个文件夹,在该目录下打开git命名
使用 git init 初始化本地仓库 成功后会出现 .git文件 (如果没有点击 菜单栏上的 查看–勾选 隐藏 项目)
然后 新建一个文件,如果没有文件无法查看分支

初始化仓库

新建文件内容(方便与后面分支比较)
新建文件内容

2.将新建文件添加到缓冲区,然后提交
git add .
git commit -m “第一次提交,初始化仓库”

在这里插入图片描述

3.查看分支
git branch

可以看到当前只有一个分支 master

在这里插入图片描述

4.新建一个dev分支
git branch dev

然后查看分支
git branch

可以看到已经有dev 和 master 两个分支,当前在master分支
在这里插入图片描述

5.切换分支到dev
git checkout dev

查看当前分支
git branch

如图:已经切换到 dev 分支
在这里插入图片描述

6.查看文件目录,发现文件和以前一样,因为dev分支是基于master的
打开index.js文件也是一样

然后添加一些内容:console.log(‘我是dev分支新加的内容’);

在这里插入图片描述

7. 添加到缓存区,然后提交(一定要有这一步)
git add .
git commit -m “dev-新增内容”

在这里插入图片描述

8. 切换到master分支查看内容
git checkout master

查看当前分支(只是确认切换成功)
git branch

在这里插入图片描述

9. 打开文件,查看index.js的内容
内容和以前一样,说明在dev分支修改的内容没有影响到master

在这里插入图片描述
而切换回dev(git checkout dev)发现内容是修改过的
在这里插入图片描述

10. 如果觉得dev分支已经开发完成,可以合并,确保自己在master分区
注意:当前是在master分支,是将dev分支合并到master分支
git merge dev

情况一:(无冲突)
这里是master内容没有被修改,后面会有被修改的情况(第 12点)
(master:我还是以前的我)
在这里插入图片描述

11. 查看index.js内容
发现新增的内容已经合并到master(没有冲突)

在这里插入图片描述


情况二:(有冲突)
在合并之前,master被修改了,有其他分支或自己 commit 过
(master:我已经不是以前的我了)

12. 合并dev分支前
修改index.js

在这里插入图片描述

13. 添加缓冲区,提交 (再次提醒不要忘了这一步)
git add .
git commit -m “修改master”

在这里插入图片描述

14. 回到master分区后将dev分支合并
git merge dev

图中出现的内容明显与上次合并出现不一样
意思是说:在index.js文件中合并冲突,自动合并失败;让你修复冲突,然后提交结果。
在这里插入图片描述
(如果出现的是: Already up to date. 说明dev分支上次合并后没有其他更新,不需要合并,可以到dev分支修改一下内容,然后提交后在来合并,以此来验证这种情况)

15. 根据提示:打开index.js文件
查看冲突,根据实际情况选择需要保留的内容
(一些编辑器可能没有快捷的选项,可以他生成的特殊字段手动删除,选择)

在这里插入图片描述
在这里插入图片描述
这里我选择后面传入的更改
在这里插入图片描述

16. 解决冲突后,然后提交
git add .
git commit -m “解决冲突”

在这里插入图片描述

17.任务完成后可以删除不需要的dev分支
git branch -d dev

在这里插入图片描述

完成!

四、其他

如果你在Git中意外删除了某个分支,或者误切换到了其他分支导致分支丢失,不用担心,Git提供了几种方法来恢复丢失的分支。

以下是几种常见的方法来恢复分支:
使用git reflog命令查看分支历史:git reflog命令可以查看所有分支的操作历史记录,包括被删除的分支。通过查找特定的提交记录或分支名称,可以找到被删除的分支的最后一次提交记录的哈希值。

git reflog
使用git branch <branch_name> <commit_hash>命令创建新分支:根据找到的提交记录的哈希值,可以使用该命令创建一个新的分支并将其指向该提交记录。这样就可以恢复被删除的分支。

git branch <branch_name> <commit_hash>
使用git fsck --lost-found命令查找丢失的对象:该命令会扫描Git对象数据库,查找没有引用的丢失对象,其中可能包括被误删的分支。找到对应的分支后,可以使用第二步的方法来恢复它。

git fsck --lost-found
从远程仓库恢复分支:如果分支已经推送到远程仓库,可以使用git fetch origin <branch_name>命令将远程分支恢复到本地。

git fetch origin <branch_name>
这些方法中的每一种都有不同的应用场景和使用方式。你可以根据自己的实际情况选择适合的方法来恢复分支。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐