Git 分支简介-创建-合并-解决冲突-删除
一、什么是分支
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>
这些方法中的每一种都有不同的应用场景和使用方式。你可以根据自己的实际情况选择适合的方法来恢复分支。
更多推荐
所有评论(0)