Git 多人协作

Git 多人协作
目前,我们所完成的工作如下:
  • 基本完成 Git 的所有本地库的相关操作,Git 基本操作,分支理解,版本回退,冲突解决等等
  • 申请 Gitee账号,将远端信息 clone到本地,以及推送和拉取

现在进入最重要的环节 —— 多人协作开发

准备工作:模拟多人协作环境

为了演示多人协作,我们需要模拟两个开发者协同工作的场景

环境设置

  1. 开发者A(Linux环境):已经 clone了远程仓库
  2. 开发者B(Windows环境):模拟另一位开发者,同样 clone相同的仓库
# 开发者A(Linux)的当前目录 $ pwd /home/HY/dir/test 

Windows环境克隆仓库

在这里插入图片描述


在这里插入图片描述

添加项目成员

要进行协同开发,必须将其他开发者添加为项目成员并分配相应权限

在这里插入图片描述
在这里插入图片描述

至此,我们已经模拟了两个开发者(Linux和Windows)共同协作的场景。

基础协作:同一分支下的协同开发

1、创建远程开发分支

在实际项目中,不允许直接在master分支上进行开发。我们需要创建专门的开发分支。

在Gitee创建dev分支
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

2、拉取远程分支到本地

两位开发者都需要将远程dev分支拉取到本地:

开发者A(Linux)操作
# 拉取远程更新 $ git pull From https://gitee.com/null_mian/test * [new branch] dev -> origin/dev Already up-to-date. # 查看远程分支 $ git branch -r origin/HEAD -> origin/master origin/dev origin/master # 创建本地dev分支并关联远程dev分支 $ git checkout -b dev origin/dev Branch dev set up to track remote branch dev from origin. Switched to a new branch 'dev' 

拉取后便可以看到远程的dev分支,接着切换到dev分支供我们进行本地开发。要说明的是,我们切换到的是本地的dev,根据示例中的操作,会将本地分支和远程分支进行关系链接

注意git branch只能查看本地分支,查看远程分支需加上-r选项(前提是要先 pull
开发者B(Windows)操作
在这里插入图片描述

3、协作开发流程

步骤1:开发者A进行开发并推送
# 确认当前分支 $ git branch * dev master # 修改文件 $ vim file.txt $ cat file.txt happy cooperating with you!!! # 提交并推送 $ git add file.txt $ git commit -m "Add a greeting line" [dev 5830349] Add a greeting line 1 file changed, 1 insertion(+) create mode 100644 file.txt # 推送到远程dev分支 $ git push origin dev ... To https://gitee.com/null_mian/test.git 4331117..5830349 dev -> dev 
在这里插入图片描述
在这里插入图片描述
步骤2:开发者B尝试推送(遇到冲突)
在这里插入图片描述
步骤3:解决冲突

先用git pull把最新的提交从origin/dev拉取下来

在这里插入图片描述

然后,在本地进行合并,并解决冲突,再推送

在这里插入图片描述

此时,我们看到远端的 Gitee已经能看到我们的新提交了

在这里插入图片描述

由此,两名开发者已经可以进行协同开发了,不断的git pull/add/commit/push,遇到了冲突,就使用我们之前讲的冲突处理解决冲突

对于你来说,想要看到小伙伴的代码,只需要pull一下即可,例如

步骤4:开发者A获取更新
# 查看当前文件 $ cat file.txt happy cooperating with you!!! # 拉取最新代码 $ git pull ... From gitee.com:null_mian/test a7545aa..5e9eeb7 dev -> origin/dev Updating a7545aa..5e9eeb7 Fast-forward file.txt | 1 + 1 file changed, 1 insertion(+) # 查看合并后的文件 $ cat file.txt happy cooperating with you!!! me too!!! 

最后不要忘记,虽然我们是在分支上进行多人协作开发,但最终的目的是要讲开发后的代码合并到master上去,让我们的项目运行最新的代码。接下来我们就需要做这件事情了

# 1、切换至 master分支,pull 一下,保证本地的 master 是最新内容 # 合并前这么做是一个好习惯 $ git checkout master Switched to branch 'master' $ git pull Already up-to-date. # 2、切换至 dev分支,合并 master分支 # 这么做是因为如果有冲突,可以在 dev分支上解决,保证 master分支的稳定性 # 这么做是一个好习惯 $ git checkout dev Switched to branch 'dev' $ git merge master Already up-to-date. # 3、切换至 master分支,合并 dev分支 $ git checkout master Switched to branch 'master' $ git merge dev Updating 4331117..5e9eeb7 Fast-forward file.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 file.txt $ cat file.txt happy cooperating with you!!! me too!!! # 4、将 master分支推送到远端 $ git status # On branch master # Your branch is ahead of 'origin/master' by 7 commits. # (use "git push" to publish your local commits) # nothing to commit, working directory clean $ git push origin master ... To [email protected]:null_mian/test.git 4331117..5e9eeb7 master -> master $ git status # On branch master nothing to commit, working directory clean 

此时,查看远端仓库,master分支已经是最新代码了

在这里插入图片描述

此时,dev分支对于我们来说就没用了,那么dev分支就可以删除了。我们可以直接在远程仓库中将dev分支删除

在这里插入图片描述


在这里插入图片描述

基础协作工作模式总结

  1. 尝试推送:使用git push origin branch-name推送自己的修改
  2. 处理推送失败:如果失败,说明远程分支比本地更新,需先git pull合并
  3. 解决冲突:如有冲突,在本地解决冲突并提交
  4. 再次推送:冲突解决后,再次使用git push origin branch-name推送
  5. 功能合并:开发完毕,将分支合并进master
  6. 清理分支:最后删除已合并的分支

进阶协作:多分支并行开发

在实际项目中,通常会为每个需求或功能点创建独立的分支,实现并行开发

场景设定

  • 功能1:由开发者A负责
  • 功能2:由开发者B负责

1、创建功能分支

开发者A创建feature-1分支
# 新增本地分支 feature-1 并切换 $ git branch * master $ git checkout -b feature-1 Switched to a new branch 'feature-1' # 新增需求内容-创建 function1文件 $ vim function1 $ cat function1 Done! # 将 feature-1分支推送到远端 $ git add function1 $ git commit -m "add function1" [feature-1 7390347] add function1 1 files changed, 1 insertion(+) $ git push origin feature-1 ... remote: Create a pull request for 'feature-1' on Gitee by visiting: remote: https://gitee.com/null_mian/test/pull/new/null_mian:feature-1...null_mian:master To [email protected]:null_mian/test.git * [new branch] feature-1 -> feature-1 
开发者B创建feature-2分支
在这里插入图片描述

此时,在本地,你看不见他新建的文档,他看不见你新建的文档。并且推送各自的分支时,并没有任何冲突,你俩互不影响,用起来很舒服!

2、查看Gitee状态

在这里插入图片描述
feature-1分支内容
在这里插入图片描述
feature-2分支内容
在这里插入图片描述

3、跨分支协作(帮同事继续开发)

当同事因故无法继续开发时,可以切换到对方的分支帮助开发

开发者A协助开发者B
# 必须先拉取远端仓库内容 $ git pull ··· From gitee.com:null_mian/test 7390347..66735e3 feature-1 -> origin/feature-1 * [new branch] feature-2 -> origin/feature-2 ··· # 可以看到远程已经有了 feature-2 $ git branch -a * feature-1 master remotes/origin/HEAD -> origin/master remotes/origin/dev remotes/origin/feature-1 remotes/origin/feature-2 remotes/origin/master # 切换到 feature-2分支上,可以和远程的 feature-2分支关联起来, # 否则将来只使用 git push 推送内容会失败 $ git checkout -b feature-2 origin/feature-2 Branch feature-2 set up to track remote branch feature-2 from origin. Switched to a new branch 'feature-2' # 查看文件 $ ls function2 README.en.md README.md # 继续开发 $ vim function2 $ cat function2 Done! Help done! # 提交并推送 $ git add function2 $ git commit -m "modify function2" [feature-2 061df75] modify function2 1 file changed, 2 insertions(+), 1 deletion(-) $ git push origin feature-2 ... To [email protected]:null_mian/test.git d246966..061df75 feature-2 -> feature-2 
在这里插入图片描述
开发者B获取更新
在这里插入图片描述

pull是因为没有指定本地feature-2分支与远程 origin/feature-2分支的链接,设置feature-2origin/feature-2的链接即可

在这里插入图片描述

4、功能开发完毕,合并到master

开发者B先合并feature-2
在这里插入图片描述
在这里插入图片描述
开发者A合并feature-1
# 切换至 master分支,pull一下,保证本地的 master是最新内容。 # 合并前这么做是一个好习惯 $ git checkout master Switched to branch 'master' ]$ git pull ... From gitee.com:null_mian/test eb21de3..4b96a42 master -> origin/master Updating eb21de3..4b96a42 Fast-forward function2 | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 function2 # 切换至 feature-1分支,合并 master分支 # 这么做是因为如果有冲突,可以在 feature-1分支上进行处理,而不是在 master分支上解决冲突 # 这么做是一个好习惯 $ git checkout feature-1 Switched to branch 'feature-1' $ git merge master Merge made by the 'recursive' strategy. function2 | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 function2 # 查看合共结果 $ ls a.so b.ini file.txt function1 function2 README.en.md README.md # 1、由于 feature-1分支已经 merge进来了新内容,为了保证远程分支最新,所以最好 push 一下。 # 2、要 push 的另一个原因是因为在实际的开发中,master的merge操作一般不是由我们自己在本地进行操作, # 其他人员或某些平台merge时,操作的肯定时远程分支,所以就要保证远程分支的最新。 # 3、如果 merge出现冲突,不要忘记需要 commit才可以 push! $ git status # On branch master nothing to commit, working directory clean # 推送feature-1更新到远程 $ git push origin feature-1 ... To [email protected]:null_mian/test.git 66735e3..9effc8e feature-1 -> feature-1 # 切换至 master分支,合并 feature-1分支 $ git checkout master Switched to branch 'master' $ git merge feature-1 Updating 4b96a42..9effc8e Fast-forward function1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 function1 # 将 master分支推送至远端 $ git status # On branch master nothing to commit, working directory clean $ git push origin master ... To [email protected]:null_mian/test.git 4b96a42..9effc8e master -> master $ git status # On branch master nothing to commit, working directory clean 
在这里插入图片描述

5、清理功能分支

此时,feature-1feature-2分支对于我们来说就没用了,那么我们可以直接在远程仓库中将其删除掉

在这里插入图片描述
注意:在实际开发中,通常会在dev分支基础上创建feature分支,而不是直接在master上创建。此处为演示方便,简化了流程。

远程分支管理

清理已删除的远程分支引用

当远程分支被删除后,本地仍能看到这些分支的引用

$ git pull Already up-to-date. # 查看所有分支(包含已删除的远程分支) $ git branch -a feature-1 feature-2 * master remotes/origin/HEAD -> origin/master remotes/origin/dev remotes/origin/feature-1 remotes/origin/feature-2 remotes/origin/master 
查看远程仓库状态

使用命令git remote show origin,可以查看 remote地址,远程分支,还有本地分支与之相对应关系等信息

$ git remote show origin * remote origin Fetch URL: [email protected]:null_mian/test.git Push URL: [email protected]:null_mian/test.git HEAD branch (remote HEAD is ambiguous, may be one of the following): feature-1 master Remote branches: feature-1 tracked feature-2 tracked master tracked refs/remotes/origin/dev stale (use 'git remote prune' to remove) Local branches configured for 'git pull': feature-2 merges with remote feature-2 master merges with remote master Local refs configured for 'git push': feature-1 pushes to feature-1 (up to date) feature-2 pushes to feature-2 (up to date) master pushes to master (up to date) 
清理过时的远程分支引用

使用命令git remote prune origin,查看那些远程仓库已经不存在的分支

$ git remote prune origin Pruning origin URL: [email protected]:null_mian/test.git * [pruned] origin/dev $ git branch -a feature-1 feature-2 * master remotes/origin/HEAD -> origin/master remotes/origin/feature-1 remotes/origin/feature-2 remotes/origin/master 

这样就删除了那些远程仓库不存在的分支。对于本地仓库的删除,之前的课程已经学过了,大家可以自行操作

总结:多人协作最佳实践

工作流程要点

分支策略
  • master:稳定版本,禁止直接开发
  • dev:集成测试分支
  • feature/*:功能开发分支
协作规范
  • 每次开发前先拉取最新代码
  • 提交时填写清晰的提交信息
  • 及时解决冲突,避免积累
合并流程
  • 功能开发完成后,在功能分支合并最新master
  • 解决可能出现的冲突
  • 发起Pull Request进行代码审查
  • 审查通过后合并到目标分支
分支管理
  • 及时删除已合并的分支
  • 定期清理过时的分支引用
  • 使用有意义的命名规范

常用命令回顾

操作命令说明
查看分支git branch -a查看所有分支
创建分支git checkout -b <name>创建并切换分支
关联远程分支git checkout -b <local> origin/<remote>创建本地分支并关联远程
推送分支git push origin <branch>推送本地分支到远程
拉取更新git pull拉取远程更新并合并
清理分支引用git remote prune origin清理已删除的远程分支引用
删除本地分支git branch -d <branch>删除已合并的本地分支

通过掌握这些协作技巧,团队可以高效地进行并行开发,同时保持代码库的整洁和稳定。

Read more

重构AIGC视频生产范式:从零开始的智能视频创作全流程

重构AIGC视频生产范式:从零开始的智能视频创作全流程 【免费下载链接】WAN2.2-14B-Rapid-AllInOne 项目地址: https://ai.gitcode.com/hf_mirrors/Phr00t/WAN2.2-14B-Rapid-AllInOne 在AIGC技术迅猛发展的今天,视频内容创作正面临着从专业壁垒向大众普及的关键转型期。传统视频生成流程往往需要专业的模型组合、复杂的参数调试和高昂的硬件支持,这使得中小企业和个人创作者难以真正享受AI技术带来的创作红利。WAN2.2-14B-Rapid-AllInOne模型(简称WAN2.2极速视频AI)的出现,以其"1模型4步"的极简设计,重新定义了智能视频创作的效率标准,为行业带来了兼具专业性与易用性的一体化解决方案。 技术痛点解析:当前视频生成领域的效率瓶颈 多模型协同的复杂性困境 传统视频生成流程通常需要串联文本编码器、图像生成器、视频插值模型等多个独立组件,每个环节都需要单独配置参数和优化,不仅增加了操作难度,还容易因模型间兼容性问题导致生成效果不稳定。以主流的T2V(文本转视频)工作流为例,用户往往

By Ne0inhk

解决VsCode远程服务器上Copilot无法使用Claude的问题

最近在用vscode中的GitHub copilot,发现无法使用claude系列的模型 很多小伙伴知道要开代理,开往带你以后claude确实会出来,本地使用没有任何问题,但是如果使用远程服务器ssh,claude系列的模型就消失了,参考这篇博客https://blog.ZEEKLOG.net/qq_40620465/article/details/152000104 按照博主的方法,需要加一个改动,在设置远程服务器(注意不是“用户”)的setting.json时需要加入"http.useLocalProxyConfiguration": true, 完成后再重启vscode,claude就有了:

By Ne0inhk
AIGC - Raphael AI:全球首个无限制免费 AI 图片生成器

AIGC - Raphael AI:全球首个无限制免费 AI 图片生成器

文章目录 * 引言 * 一、Raphael AI 是什么? * 二、核心引擎:Flux.1-Dev 与 Flux Kontext * 1. Flux.1-Dev:极速与精细的结合 * 2. Flux Kontext:精确的语义理解 * 三、主要功能一览 * 1. 零成本创作 * 2. 多风格引擎 * 3. 高级文本理解 * 4. 极速生成 * 5. 隐私保护 * 四、实测体验与使用方式 * 五、与其他 AI 绘图平台的对比 * 六、未来发展与生态计划 * 七、总结:AI 创意的平权时代 引言 在生成式 AI 技术飞速发展的时代,图像生成的门槛正在被彻底打破。

By Ne0inhk
2025年必备!5款免费AIGC检测工具推荐,论文查重一键搞定

2025年必备!5款免费AIGC检测工具推荐,论文查重一键搞定

人工智能技术正以迅猛之势发展,AIGC(人工智能生成内容)在各个领域的应用也日益广泛。然而AIGC内容的检测与查重问题也随之而来。对于学术研究者而言,确保论文的原创性、避免AIGC内容的滥用极为重要。今日,为大家推荐5款免费的AIGC检测工具,助力你在2025年轻松完成论文查重。 1. 学术云端AI写作助手 工具简介 学术云端是一款聚焦于论文领域的神级工具,它每天都能为用户提供无限次免费的AIGC率检测服务。该工具不仅可以高效检测论文中的AIGC内容,还具备一系列降重和降低AIGC率的实用功能。 主要功能 * 无限次免费改稿:用户下单后都能无限次AI改稿,无需担忧次数受限的问题。 * 专业降重建议:学术云端会提供详细的降重建议,帮助用户优化论文的结构。 * 智能同义词替换:它能够自动识别并替换高重复率的词汇,以此提升论文的原创性。 使用体验 学术云端的操作界面简洁易懂,用户只需上传论文文档,系统便会自动进行AIGC率检测,随后生成详细的检测报告。此外学术云端还配备了丰富的降重工

By Ne0inhk