github教程之多人协作

一、新建仓库并邀请协作者

1.新建仓库并编辑仓库信息

进入GitHub首页,点击右上角的'+'号,选择"New repository"

编辑仓库信息后点击"Create repository"完成远程仓库的建立.

2.Leader邀请Collaborator加入该项目和Collaborator接受邀请

在"Settings"的"Collaborators"中输入Collaborator的GitHub用户名(邮箱)来邀请Collaborator加入;

被邀请的人可以在github站内消息收到邀请,点击Accept Invitation

这时,Leader的"Collaborators"中出现了Collaborator.

二、多人协作------单分支

**任务:**开发者A和开发者B在同一分支 feature 下开发。开发者A在 README 中增加一行 aaa,开发者B在 README 中增加一行 bbb

**场景:**开发者A在创建 feature 分支前就克隆过远程仓库,而开发者B则在创建 feature 分支后才克隆远程仓库

1.查看所有的分支

使用指令 git branch -r 指令可以查看远程仓库中的所有分支

对于A来说只能看到 master 分支

原因也不难理解,开发者A是在创建 feature 分支前克隆远程仓库的,因此当前是落后于远程仓库的最新版本。

我们需要使用 git pull 指令来更新分支信息:

== 这里来介绍一下git pull 指令:==

先记住核心:

git pull = git fetch + git merge

git fetch:把远程新提交下载到本地(不需要追踪关系)

git merge:把下载回来的远程提交合并到本地当前分支,自动合并这个动作,依赖追踪关系。没有追踪关系,直接敲 git pull Git 不知道要合并哪个远程分支,会报错。git pull origin dev:手动指定远程 + 分支,不需要追踪,直接合并这个远程分支到当前本地。

那么什么是追踪关系呢,当我们 clone 远程仓库时其实自动建立了本地master分支与远程master分支的追踪关系------即链接

2.开发者A进行开发

  1. 在本地创建 feature 分支,并与远端的 origin/feature 分支建立连接
    git checkout -b feature origin/feature 指令创建一个 feature 分支并切换到 feature 分支上,并建立远端 feature分支的追踪关系
    git branch -a 指令用于显示本地和远端的所有分支
    git branch -vv 指令显示本地分支与远端分支的追踪关系。可以看到此时本地的 feature 分支已经与远端的 origin/feature 分支建立了连接
  2. 在 feature 分支上完成开发,并提交到远端的 origin/feature 分支上:git push

3.开发者B进行开发

  1. 在本地创建 feature 分支,并与远端的 origin/feature 分支建立连接
    git checkout -b feature origin/feature
  2. 在 feature 分支上完成开发,并提交到远端的 origin/feature 分支上:git push
    当我们尝试push到远端仓库时发生了冲突,原因是远端仓库的版本比我们当前的版本高(因为开发者A完成了push操作),我们首先需要 pull 远端仓库的分支内容,解决完冲突后才能再次 add + commit + push
    == 所以建议: 在开发前首先使用 git pull 指令,确保从最新版本开始开发==

4.合并分支

合并分支也有两种方式:

  1. 提交 pull request,通过代码审验后合并到 master 分支
  2. 在本地 master 分支上合并后再 push 到远端的 master 分支
    在单分支的版本中,先带大家用用方法二

先将 master 分支合并到 feature 分支上,解决冲突后并且确认没有 bug 后再合并到 master 分支上。

git merge master:将本地master合并到本地的feature,在feature里面解决冲突

git checkout master:切换到本地的master

git merge feateure:把处理好冲突的feature合并到master分支

git push:把master分支提交到远端

5.清理分支

  • 远程直接在github上删除分支
  • 本地删除分支:git branch -D feature
  • 此时我们使用 git branch -r 指令仍然能看到 origin/feature,此时我们需要使用 git pull --prune 指令进行修剪,把本地那些远程已经不存在的 origin/* 镜像删掉,这里就会清除掉残留的origin/feature。

三、多人协作------多分支

多人在单分支上协作开发时,经常需要解决冲突的问题;而使用多分支,各个开发者在各自的分支上独立开发,只需要在最后合并分支时解决冲突即可

**任务:**开发者A在 feature-1 分支下编写文件file1。开发者B在 feature-2 分支下编写文件file1、file2

1.开发者A在本地创建 feature-1 分支

bash 复制代码
# 基于当前分支新建目标分支
git checkout -b  feature-1 

# 推送远程并关联
git push -u origin  feature-1 

Git 会将本地的 feature-1 分支推送到 origin 远程仓库中的相应分支。如果远程仓库不存在名为 feature-1 的分支,则 git 会创建之;如果存在,则将修改合并到该分支上

2.开发者B同理

此时远端已经多了两个分支:feature-1和feature-2

3.在分支上各自开发

4.pull request

开发者A:

提交 pull request。可自动合并说明没有遇到冲突

仓库的管理人员完成对你的审核通过、测试通过后,就可以合并到 master 分支中。在"文件"一栏中可以看到你的修改

开发者B:

提交 pull request。不可自动合并说明遇到了冲突

我们不能在 master 分支上处理冲突。解决方式与之前类似,先将 master 分支合并到 feature-2 分支上,解决完冲突后再将 feature-2 分支合并到 master 分支上

切换到 master 分支上,首先 git pull 拉取最新版本的 master 分支代码!!

git switch master

git pull

切换到 feature-2 分支上,合并 master 分支。遇到冲突,冲动解决冲突

git switch feature-2

git merge master

冲突解决,并推送到远端仓库

git switch master

git merge feature-2

git push

此时再次发起 pull request 请求就不会遇到问题了

5.清理

前面提到,删除分支也有两种方式:

  1. 在远端和本地各自删除 feature 分支
  2. 在本地删除 feature 分支后推送到远端

现在我们演示第二种删除方式

删除远端分支:git push origin --delete xxx 。

删除本地分支:git branch -D xxx

相关推荐
笨笨狗吞噬者2 小时前
IRIS: shell 中的智能实时输入提示工具
github·shell
fthux5 小时前
MCP协议开发实战:从零搭建AI Agent工具链
前端·人工智能·ai·开源·github
@CLoudbays_Martin115 小时前
Linux 服务器如何查看是否被植入后门?
linux·服务器·网络·安全·github·ssl
一次旅行5 小时前
Ollama本地私有化大模型完整工程实战
人工智能·机器学习·github
华科大胡子5 小时前
GitHub Copilot 能换成本地模型吗?—— 本地化替代方案深度解析
人工智能·github·copilot
TunerT_TQ21 小时前
Valhalla 静态工程审阅 #024|蚂蚁集团Ant Design 源码证据驱动评测【大厂开源基础设施特辑】
开源·github·蚂蚁集团·#推荐系统·#typescript·#antdesign
tokenKe1 天前
Cloudflare Computer: 给每个 AI Agent 一台专属电脑 | SSP Github Daily
人工智能·github
华科大胡子1 天前
GitHub Actions 自动化运维实战:从入门到企业级应用
github