Git多人协作开发

本文详细介绍了Git中创建、管理分支,解决本地与远程分支同步,多人协作处理冲突,以及使用GitFlow模型的最佳实践,包括DevOps平台的项目管理和分支策略。

1、创建分支(在码云上)

(1)在本地查看我们本地指向远程的分支:git branch -r

(2)我们在码云上新建了个dev分支,我们将dev分支拉取到本地:git pull

(3)展示我们的本地分支和远程分支:git branch -a

(4)不能直接对远程我们新建的dev分支进行修改:我们应该在本地新建一个dev并指向远程的dev分支:git checkout -b dev origin/dev

(5)查看我们本地分支跟远程分支建立的联系:git branch -vv

(6)将本地分支和远程分支建立连接:git branch --set-upstream-to=origin/dev dev(第二个dev是本地,第一个是远程)

(7)当我们的开发者一和开发者二都对分支进行更改提交之后会有冲突:

(7.1)先拉下远程仓库分支:git pull

(7.2)打开我们拉下来的文档进行更改

(7.3)然后对我们更改在推送至远程

2、将我们更改后的dev分支合并到我们的主分支上

(1)PR(提交申请单):

(1.1)合并2分支为了避免冲突,首先将2分支合并master,冲突在2分支上解决掉不能影响master分支

(1.2)合并分支时候我们的2分支直接进行和master合并就行(用码云上合并分支申请)

(1.3)合并1分支为了避免冲突,首先将1分支合并master,冲突在1分支上解决掉不能影响master分支

(1.4)然后进行和master合并即可

(1.5)在本地进行合并的时候要首先确保master是不是最新的,不是最新的我们要进行pull一下

(1.6)合并完之后ctrl + X退出即可

(1.7)进行add..push操作 

(1.8)如果没有进行本地分支对远程分支的指向(不能push)我们就要用:git push origin feature-1 这个操作来提交到远程仓库(然后到远程仓库进行提交表单操作)

(2)主要针对本地操作(多人协作单分支场景):

(2.1)git pull(拉下远程仓库的master)

(2.2)dev merge master(有冲突在dev上解决)

(2.3)master merge dev

(2.4)push master

(2.5)操作完成就可以在码云上删除我们创建的dev分支了

(3)多人协作开发(不同分支):

(3.1)远程创建分支(推荐)因为分支内容最新

(3.2)本地创建分支:

(3.2.1)创建本地分支(git checkout -b 分支名字)

(3.2.2)因为我们创建的分支没有对应的远程分支指向,所以我们不能直接进行push操作,我们可以git push origin 分支名,在远程创建一个分支(内容也随之带了上来),也可以用上个博客的两个代码来修改分支指向

4、多人协作(当我们的开发伙伴开发到一半需要我们继续他的开发):

(1)git pull:将我们的远程仓库内伙伴的分支拉到我们本地上来

(2)git checkout -b 本地新建分支名 origin/远程仓库分支名(建立并绑定连接)

(3)写完之后 add commit push

(4)当我们的伙伴回来后他需要

(4.1)需要先利用上一个博客的方法建立连接

(4.2)git pull操作将我们更改后的内容拉到他的本地上去

(4.3)写完之后进行add等操作

(4.4)在我们的码云上进行审核

5、当我们在远程仓库删除之我们在本地仓库获取分支之后依旧可以看到我们远程仓库已经删除的分支:(查看本地分支状态:git branch -a)

(1)查看远程分支状态:git remote show origin(分支显示stale就表明显示陈旧状态可以删除)

(2)删除陈旧(已删除)分支:git remote prune origin

6、Git Flow模型(不适用于所有)

分支名称使用环境
master主分支生产环境
release预发布分支预发布/测试环境
develop开发分支开发环境
feature需求开发分支本地
hotfix紧急修复分支本地

(1)master:主分支,一般由合并release分支得到,不允许直接在master分支上写,分支不可删除,用于对外发布

(2)release:基于本次线上所有的feature分支合并到develop分支之后,基于develop分支创建,可部署到预发布集群,属于临时分支,产品上线后可删除(版本加日期 release/1.0_日期)

(3)develop:基于master创建的只读且唯一分支,始终保持最新完成以及bug修复后的代码,可部署到开发环境对应的集群,一般由feature分支合并

(4)feature:新功能开发分支,以develop分支为基础创建,命名以feature/开头,开发完成后合并到develop分支上,合并后将该分支删除(名字_日期_pay)

(5)hotfix:需要基于master分支创建该分支,需要合并master分支和develop分支并推送至远程,一旦修复上线将其删除

7、企业级项目管理

(1)DevOps研发平台

(2)创建项目(敏捷项目)

(3)点击代码->新建仓库

(4)我选择的是  生产/开发模型(支持master/develop类型分支)

### Git多人协作开发的最佳实践 在多人协作开发环境中,Git 是一种强大的版本控制工具,可以帮助团队高效地管理和维护代码库。为了确保项目的顺利推进并减少冲突的可能性,以下是一些关于 Git 多人协作开发的最佳实践: #### 1. 使用分支策略 采用清晰的分支策略是多人协作的核心之一。常见的分支模型有 **Git Flow** 和 **GitHub Flow**。 - **Git Flow**: 这种模式通常用于较复杂的项目,涉及多个长期存在的分支,如 `main`、`develop`、功能分支 (`feature/*`)、发布分支 (`release/*`) 和修复分支 (`hotfix/*`)。 - **GitHub Flow**: 更加简单灵活,适用于持续交付场景。主要依赖于 `main` 分支和短期的功能分支 (`feature/*`) 或补丁分支 (`patch/*`)。 通过遵循这些最佳实践,不仅可以提高代码质量,还可以增强对 `git add` 的理解,从而更自信地处理变更[^1]。 #### 2. 配置全局用户名和邮箱 每位开发者都应该设置自己的全局用户名和邮箱地址,以便每次提交都可以被正确标记归属信息: ```bash git config --global user.name "Your Name" git config --global user.email "your-email@example.com" ``` #### 3. 提交消息规范 编写清晰且有意义的提交消息对于后续审查和调试至关重要。建议按照如下格式撰写提交消息: - 主题行(不超过50字符) - 空白行分隔主题与正文描述 - 正文部分具体说明改动原因及其影响 如果未指定编辑器来修改提交信息,则可以通过环境变量 `GIT_EDITOR=` 来触发默认行为[^3]。 #### 4. 定期同步远程仓库 保持本地副本始终最新非常重要。这包括定期拉取最新的更改以及解决可能产生的合并冲突: ```bash # 更新前先保存当前工作状态 git stash save 'message' # 获取上游更新并与之合并 git pull origin main # 应用之前存储的状态 git stash pop ``` #### 5. 制定代码评审机制 引入 Pull Request (PR) 流程可以让其他成员参与审核新加入的内容。这样不仅有助于发现潜在错误,也能促进知识共享和技术提升。 #### 6. 自动化测试集成 尽可能多地利用 CI/CD 工具自动运行单元测试和其他验证过程,在早期阶段捕捉缺陷。 --- ### 示例脚本:自动化创建特性分支 下面是一个简单的 Bash 脚本来帮助快速启动一个新的特性和关联至 Jira ticket ID: ```bash #!/bin/bash read -p "Enter the feature name: " FEATURE_NAME JIRA_TICKET=$(echo "$FEATURE_NAME" | cut -d'-' -f1) if [[ $JIRA_TICKET =~ ^[A-Z]+-[0-9]+$ ]]; then BRANCH="feature/${JIRA_TICKET}-${FEATURE_NAME}" echo "Creating branch ${BRANCH}..." git checkout -b "${BRANCH}" develop else echo "Invalid input, please use format like PROJECTNAME-XXXX-feature-name." fi ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值