问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Git多人协作——从配置到分支管理实例详解

创作时间:
作者:
@小白创作中心

Git多人协作——从配置到分支管理实例详解

引用
CSDN
1.
https://blog.csdn.net/2301_79764985/article/details/143837388

Git 概述

Git 是一个分布式版本控制系统,设计用于处理大型项目的源代码管理。在多人的开发环境中,Git 提供了强大的协作能力,允许团队成员在本地仓库中进行独立开发,同时通过远程仓库实现代码的共享和合并。Git 协作旨在帮助开发者高效地管理版本、避免冲突、确保代码质量,并通过审查流程优化团队合作。

功能分支工作流(Feature Branch Workflow)介绍

功能分支工作流(Feature Branch Workflow)是 Git 协作中一种常用的工作流模式,适用于多人协作的开发环境。

该工作流的核心思想是:每个新功能、Bug 修复或任务都应在独立的功能分支 feature上进行开发,开发完成后再将该分支合并回主分支 master

这种方式的主要优势是它可以将不同的开发任务隔离开,避免它们相互干扰,并减少冲突的发生。

Feature Branch Workflow 的具体流程

  1. 开发者从主分支 master创建一个新的功能分支 feature
  2. 功能分支 feature上进行开发工作
  3. 完成开发任务后,开发者将功能分支 feature合并回主分支 master
  4. 合并完成后,可将功能分支 feature删除以保持代码库清晰

Git配置和基础命令

安装Git

  • Windows

  • 官网下载:Git下载

  • 验证安装:在准备创建新仓库的文件夹右键鼠标,点击 "Open Git Base here" 或在命令行输入 git --version,若能看到版本号说明安装成功

  • Ubuntu(Linux)

  • 终端输入以下命令进行安装:

    sudo apt update
    sudo apt install git
    
  • 验证安装:终端输入 git --version,若能看到版本号说明安装成功

配置Git

  1. 设置用户名和邮箱地址

    git config --global user.name '用户名'
    git config --global user.email '邮箱地址'
    
  2. 检查配置

    git config --global --list
    

SSH配置

  1. 生成 SSH 密钥对

    ssh-keygen -t rsa
    
  2. 获取 SSH 公钥

    cat ~/.ssh/id_rsa.pub
    

    复制返回的内容

  3. 在 Gitee 里添加公钥
    Gitee -> 个人图标 -> 账号设置 -> SSH密钥对

Git的基础命令

Windows 打开Git Bash,Ubuntu 打开终端

  1. 创建一个新的 Git仓库

    git init
    
  2. 克隆一个现有的 Git仓库

    git clone git@gitee.com:yugeduck/git-test.git
    
  3. 查看仓库状态

    git status
    

    这将显示哪些文件已修改、哪些文件是新的未追踪文件等

  4. 添加文件到暂存区

  • 某个文件:
    git add <文件名>
    
  • 全部文件:
    git add .
    
  1. 提交更改

    git commit -m "描述信息"
    

    “描述信息”用于描述此次提交进行了什么更改

  2. 查看提交历史

    git log
    
  3. 分支相关

  • 将分支推送到远程仓库
    git push
    
  • 更新分支信息(确保处于最新版本)
    git pull
    
  • 创建并切换分支
    git checkout -b new-branch
    
  • 切换到现有分支
    git checkout existing-branch
    
  • 合并分支
    git merge branch-name
    
  • 查看当前分支
    git branch
    
  • 查看远程仓库中的所有分支
    git branch -r
    
  • 显示本地和远端的所有分支
    git branch -a
    
  • 显示本地分支与远端分支的追踪关系
    git branch -vv
    

示例

本文将会用两个例子分别演示不同的创建分支、合并分支以及删除分支的方式

  • 创建分支

    1. 在远端仓库直接创建分支,然后在本地连接远端的分支
    2. 先在本地创建分支,后在远端仓库创建一个与本地分支对应的分支
  • 合并分支

    1. 在本地 master 分支上合并后再 push 到远端 master 分支
    2. 提交 pull request,通过代码审验后合并到 master 分支(更推荐)
  • 删除分支

    1. 在远端和本地分别删除 feature 分支
    2. 先在本地删除 feature 分支,后推送到远端

示例一

场景:成员A在创建分支后才克隆远端仓库,后在分支 feature 下开发:在 README 中增加一行 “This is A”

(一)创建分支
这里使用创建分支的第一种方式
在 gitee 远端仓库里直接创建

(二)克隆一个 Git仓库

  • 打开 Git Bash,输入:
    git clone git@gitee.com:yugeduck/git-test.git
    
    其中 “git@gitee.com:yugeduck/git-test.git” 是目标仓库的地址
  • 进入仓库所在文件夹
    cd git-test
    

(三)查看分支信息

git pull

两个作用:

  • 拉取远程分支中的最新提交,并自动合并
  • 更新远程仓库的分支信息,确保本地分支处于最新版本

(四)成员A在本地 feature 分支上开发,并推送到远端 feature 分支

  1. 创建一个 feature 分支并切换到 feature 分支上,并与远端 feature 分支建立追踪关系

    git checkout -b feature origin/feature
    git pull
    

    另外提一点,当 clone 远端仓库的时候就已经自动建立了本地 master 分支和远端 master 分支的追踪关系

  2. 对 feature 分支进行开发
    编辑文件的方式有很多种,这里用 vim 来演示

    vim README.md
    git add .
    git commit -m "add A"
    git push
    

    在 gitee 仓库可以看到成员A进行了提交

(五)成员A将本地 master 分支推送到远端仓库

  • 这里使用合并分支的第一种方式:
    先把本地 master 分支合并到本地 feature 分支上,然后切换到本地 feature 分支将 master 分支推送到远端仓库

    git merge master
    

    合并 master 分支到 feature 分支

    git checkout master
    

    切换到 master 分支

    git merge feature
    

    合并 feature 分支到 master 分支

    git push
    

    推送

  • 为什么要按这个复杂的流程来呢?
    因为在解决合并冲突时,可能会不小心引入新的 bug。为了确保主分支的稳定性,不能直接将 feature 分支合并到 master 分支。
    正确的做法是先将 master 分支合并到 feature 分支,解决冲突并确认没有引入 bug 后,再将 feature 分支合并回 master 分支。
    这样,如果之前已经有过 master 和 feature 分支的合并记录,后续合并时就不容易发生冲突(因为这些操作都是在本地进行的)

(六)删除 feature 分支
成员A成功把本地 master 分支合并到远端 master 分支后,如果需要,可以选择将 feature 分支删除。
这里使用删除分支的第一种方式:

  1. 在 Gitee 远端仓库删除 feature 分支
  2. 在本地删除 feature 分支
    git checkout master
    
    切换到 master 分支
    git branch -D feature
    
    本地删除 feature 分支
    git pull --prune
    
    删除已经被远程仓库删除的本地跟踪分支

示例二

场景:成员A(章玉阁)和成员B(余歌duck)克隆远程仓库后才创建分支。成员A在分支 feature-1 下开发:编写 file1.txt;成员B在分支 feature-2 下开发:编写 file1.txt 和 file2.txt

(一)成员B克隆仓库

git clone git@gitee.com:yugeduck/git-test.git
cd git-test

(二)创建分支
在示例一中,成员A已经创建了仓库并进行克隆操作,完成提交后删除了 feature 分支。
接下来通过第二种方式来创建分支:

git checkout -b feature-1

创建本地分支,但是不指定与远程分支 orgin/feature-1 建立连接

git push origin feature-1

创建远端分支

git branch -vv

查看追踪关系
由于没有建立追踪关系,无法直接使用 git pull git push 等缩写指令
此时有两种方法:①使用完整的命令 ②建立远端分支与本地分支的追踪关系

git branch --set-upstream-to=origin/feature-1

建立追踪关系
另外提一点,

git push -u origin feature-1

这条命令在创建远端分支时,会自动建立追踪关系

(三)成员B 同理

  • 与 成员A 同步骤
  • 在 Gitee 上可以看到已经多了两个分支(feature-1、feature-2)

(四)成员A编写 file1.txt 并提交

(五)成员A合并分支
这里使用合并分支的第二种方式(更推荐):成员A 提交 pull request,将本地 feature-1 合并到远端 feature-1,再合并到 master。

  1. 在 Gitee 上提交 pull request
    可自动合并说明没有遇到冲突(此时是将 成员A 本地 feature-1 分支合并到 远端 feature-1 分支)
  2. 仓库的管理人员完成审核通过、测试通过后,合并到 master 分支中

(六)成员B 修改 file1.txt,并编写 file2.txt

(七)成员B合并分支
成员B 提交 pull request,将本地 feature-2 合并到远端 feature-2,再合并到 master

  1. 在 Gitee 上提交 pull request
    不可自动合并说明遇到了冲突
  2. 遇到冲突,手动解决冲突
    注意不能在 master 分支上处理冲突。原因和解决方式参考上文。
git checkout master

切换到 master 分支

git pull

拉取最新版本

git checkout feature-2

切换到 feature-2 分支

git merge master

将 master 合并到 feature-2

git status

查看冲突文件
打开冲突文件,从当前版本和远程仓库中的版本选择一个

git add file.txt

标记冲突已解决

git commit

提交到暂存区

git log --oneline

检查合并情况
1. 此时 Gitee 再次发起 pull request 请求就不会遇到问题

(八)合并成功后,如果需要,可以选择将 feature-1 或 feature-2 分支 删除
这里使用删除分支的第二种方式:

git push origin --delete feature-1

删除远端分支

git branch -D feature-1

删除本地分支
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号