在多人协作的 Git 仓库中,新建分支并最终将其合并到主分支的流程是为了实现团队协作、提高代码的可管理性、确保代码质量,并且避免多人同时修改同一部分代码导致冲突。以下是这个流程的目的和具体步骤。
目录
1. 在 master 上新建一个分支
2. 进行功能开发
3. 合并功能分支到 master 分支
4. 删除开发分支
1. 在 master 上新建一个分支
首先,确保你的 master
分支是最新的。然后,创建一个新的分支来开发新功能。
a. 拉取最新的 master
分支
git pull origin master
//拉取最新的 master 分支代码
结果 :
From https://gitee.com/louuuuu/dong-ruan-hospital
:表示从远程仓库https://gitee.com/louuuuu/dong-ruan-hospital
拉取数据。* branch master -> FETCH_HEAD
:表示你拉取的是远程的master
分支,并且这个分支的更新内容已经被存储在一个临时的FETCH_HEAD
中。FETCH_HEAD
是 Git 内部用来存储最近一次git fetch
操作的数据的位置。Already up to date.
:这意味着你本地的master
分支已经是最新的,与远程仓库的master
分支没有差异,所以没有需要拉取的更新。
b. 创建并切换到新分支
假设你的功能是添加一个 feature-xyz
,你可以这样创建并切换到新分支:
git checkout -b feature-xyz
//创建并切换到 feature-xyz 分支
git checkout -b feature-xyz
//仅切换
结果 :
2. 进行功能开发
在 feature-xyz
分支上进行功能开发,修改代码并提交。
a. 添加和提交代码
git add .
// 将所有修改的文件添加到暂存区
git commit -m "Add feature-xyz"
// 提交更改
结果 :
[feature-xyz 1de68d6]
:表示此次提交是在feature-xyz
分支上,提交的哈希值为1de68d6
。feat:再次测试合并-何玉婷
:这是你刚才输入的提交信息。1 file changed, 7 insertions(+)
:1 file changed
:表示此次提交修改了一个文件。7 insertions(+)
:表示在这个文件中有 7 行新代码被添加进来。
b. 将开发分支推送到 Gitee
git push origin feature-xyz
// 将本地的 feature-xyz 分支推送到远程仓库
输出说明:
- Enumerating objects: 15, done.:列举了 15 个对象(这些对象包括新的提交、文件变更等)。
- Counting objects: 100% (15/15), done.:确认了总共有 15 个对象要处理,且已经完成。
- Delta compression using up to 8 threads:使用最多 8 个线程进行增量压缩,这有助于减少数据传输量。
- Compressing objects: 100% (7/7), done.:完成了 7 个对象的压缩(其中 7 个是实际的提交或文件变更)。
- Writing objects: 100% (8/8), 742 bytes | 742.00 KiB/s, done.:所有 8 个对象成功写入到远程仓库,总大小为 742 字节,传输速度为 742.00 KiB/s。
- Total 8 ( 4), reused 0 ( 0), pack-reused 0 (from 0):表示这次推送总共有 8 个对象,其中 4 个是增量变更,其他是新的对象。
远程提示:
- 表明你的推送成功上传到 Gitee(国内的一个 Git 托管平台)。
- 提供了创建 Pull Request 的链接,建议你去 Gitee 上创建一个 Pull Request,将
feature-xyz
分支的更改合并到master
分支。
3. 合并功能分支到 master 分支
开发完成后,需要将 feature-xyz
分支合并到 master
分支。
a. 切换回 master
分支
git checkout master// 切换回 master 分支
b. 拉取最新的 master分支代码
git pull origin master
// 确保 master 分支是最新的
c. 合并 feature-xyz 分支到 master
git merge feature-xyz
如果合并时没有冲突,Git 会自动完成合并。如果有冲突,你需要手动解决冲突。
1. Updating ef154af..1de68d6
:
- 这是合并操作中,Git 正在更新当前分支的提交历史。从
ef154af
(当前分支的最新提交)到1de68d6
(feature-xyz
分支的最新提交)。 - 表示在合并的过程中,当前分支将更新到
feature-xyz
分支的最新状态。
2. Fast-forward
:
- 表示合并是“快进(fast-forward)”合并。也就是说,当前分支没有新的提交,而
feature-xyz
分支包含了新的提交,因此,Git 只需将当前分支的指针直接移动到feature-xyz
分支的最新提交,来完成合并。 - 这种合并方式是最简单的,Git 不需要生成新的合并提交。
3. .../pages/Dashboard/MedicalFrontline/PrescriptionManagement.jsx | 7 +++++++
:
- 表示在
PrescriptionManagement.jsx
文件中进行了 7 行的插入操作。 - 这些变更来自于
feature-xyz
分支。你可以看到,这次合并只涉及到文件的插入,而没有删除或修改。
4. 1 file changed, 7 insertions(+)
:
- 表示合并操作改变了一个文件,并且在该文件中插入了 7 行代码。
d. 推送合并后的 master
分支到 Gitee
git push origin master
// 将合并后的 master 分支推送到远程仓库
1. Total 0 ( 0), reused 0 ( 0), pack-reused 0 (from 0)
:
- 这表示没有新的对象需要推送,或者说没有新的变更需要上传到远程仓库。
- 由于你之前已经执行了
git merge
命令,合并操作是通过快进合并完成的,没有额外的提交需要推送,git push
仅仅将本地分支指向新的提交,并且没有需要传输的新数据。
2. remote: Powered by GITEE.COM [1.1.5]
:
- 表示你的 Git 操作正在通过 Gitee 平台进行处理。
3. remote: Set trace flag 584b4d92
:
- 这是 Gitee 系统内部的一个跟踪信息,通常用于调试和记录操作。
4. To https://gitee.com/louuuuu/dong-ruan-hospital.git
:
- 显示了远程仓库的地址,这表示推送操作是发送到这个 Gitee 仓库的。
5. ef154af..1de68d6 master -> master
:
- 这表示你的本地
master
分支的指针从ef154af
(原本的提交)更新到了1de68d6
(新的提交)。 - 这次更新可能是由先前的合并(
feature-xyz
分支合并)引起的,也有可能是其他修改导致。
4. 删除开发分支
如果功能开发完成并且合并到 master
后,你可以删除本地和远程的 feature-xyz
分支。
a. 删除本地分支
branch -d feature-xyz
b. 删除远程分支
git push origin --delete feature-xyz