当前位置: 首页 > news >正文

【Git多人开发与协作之团队的环境搭建】

Git多人开发与协作之团队的环境搭建

    • 新的改变
    • 1. Git 的用途
    • 2. 分支的概念与类型
    • 3. HEAD 和分支指针
      • 如何查看 HEAD 指向的位置:
    • 4. 常见的 Git 操作
    • 5. 常见问题与解决方法
    • 总结
    • GitHub 项目获取实操
    • 在新电脑上运行 Git
      • 1. 安装 Git
      • 2. 配置用户名和邮箱
      • 3.配置 Git 和 SSH 密钥
      • 4.生成 SSH 密钥
    • 如何在idea上完成git的使用:

新的改变

最近要完成我们的小组作业了,对此我觉得做一些新的尝试,比如教会团队人员如何正确使用 Git 来实现代码的多人协作,提高开发效率,提升个人能力。这对于我们这样的大学生还颇具挑战的,不过对于我来说这是一个有趣的东西,我并不渴望从中获得什么,我只是单纯的体验这种快乐,享受 coding 的乐趣。

1. Git 的用途

Git 是一个分布式版本控制系统,主要用于管理代码的变更。其主要功能是:

  • 跟踪代码变更:每次修改都能被记录下来,并且可以随时回退到以前的版本。
  • 多人协作:Git 允许多个开发者同时在同一个项目上工作,通过分支和合并的方式避免冲突。
  • 代码分支管理:通过分支,团队可以独立开发不同的功能或修复不同的 bug,而不影响主代码库。

2. 分支的概念与类型

在 Git 中,分支(Branch) 是用来独立开发不同功能的工具。分支使得我们能够在不干扰主开发流程的情况下进行开发。

  • 本地分支(Local Branch): 本地分支是你在自己的开发环境中创建和操作的分支。例如,你可能会创建一个 feature/login 分支来开发登录功能,开发完成后再合并到主分支。
  • 远程分支(Remote Branch): 远程分支是在 Git 仓库服务器上存在的分支,通常由团队成员共享。origin/main 就是 Git 默认的远程主分支名。
  • 多个分支开发: 在多人开发的场景中,每个人可以在自己的分支上进行开发。例如,一个成员负责前端功能的开发,另一个成员负责后端 API 的开发。这些分支开发完成后,可以通过 Pull Request(PR)合并到 develop 分支中进行集成,最后合并到 main 分支发布。

3. HEAD 和分支指针

HEAD 是 Git 中的一个指针,它指向当前所在的分支和提交。可以认为 HEAD 是你当前工作的“游标”。

例如,当你切换到 feature/login 分支时,HEAD 会指向该分支的最新提交。

如何查看 HEAD 指向的位置:

  • 使用 git status 查看当前分支。
  • 使用 git log 查看历史提交记录,确认 HEAD 指向的提交。

4. 常见的 Git 操作

  • 创建本地分支并切换到该分支
    git checkout -b <branch_name>
    
  • 查看本地和远程分支
    git branch        # 查看本地分支
    git branch -r     # 查看远程分支
    
  • 切换分支
    git checkout <branch_name>
    
  • 合并分支:当开发完成后,可以通过合并操作将当前分支的改动合并到主分支(如 develop):
    git merge <branch_name>
    
  • 推送分支到远程仓库
    git push origin <branch_name>
    
  • 拉取远程分支到本地
    git pull origin <branch_name>
    

5. 常见问题与解决方法

  • 分支合并冲突:合并分支时可能会出现代码冲突。Git 会提示你哪个文件有冲突,你需要手动解决冲突,修改文件后提交:
    git status         # 查看冲突文件
    # 编辑文件,解决冲突
    git add <file_name>  # 标记冲突已解决
    git commit         # 提交修改
    
  • 如何撤销更改:如果你在修改文件时遇到问题,可以撤销对文件的更改:
    git checkout -- <file_name>  # 撤销对某个文件的修改
    git reset --hard             # 撤销所有更改(注意:此命令会丢失所有未提交的更改)
    

总结

Git 是一个高效的开发工具,我们可以给团队的每个人员配置好编译环境和 Git 环境后,每个人员拥有一个本地分支,来更新和获取远程分支的内容,了解现在团队的代码开发进度,或者通过 Git 回溯到之前开发的代码内容。通过 Git 每个人可以开发不同的功能,页面,然后通过 Git 来合并分支,完成多个人共同开发不同的功能。

因此我们需要一个远程分支,来表示我们当前项目的总的开发进度,再使用一个远程分支表示我们测试的进度,我们会在这上面去合并我们已经开发的新功能,在本地我们每个人会开发不同的功能,进行测试和验证。通过 GitHub 可以看到不同的分支内容。

因此正确的方式是每个人的本地分支,推送到远程测试分支上,完成单个或者多个功能的合并更新,验证没有问题后由主要开发人员更新到项目分支上。

GitHub 项目获取实操

为了方便大家获取到我已经上传的 GitHub 文件,我建立了一个 GitHub 仓库,大家可以下载:

https://github.com/yearsGG/2024GUC_xz_vue-sbringboot_shangdian

或者通过命令行(cmd)直接使用命令:

git clone git@github.com:yearsGG/2024GUC_xz_vue-sbringboot_shangdian.git

展示图片

在新电脑上运行 Git

1. 安装 Git

首先,我们需要下载并安装 Git。可以通过 Git 的官方网站进行下载:

Git 下载官网

安装完成后,可能需要配置环境变量。

2. 配置用户名和邮箱

在命令行上配置用户名和邮箱,以便提交时使用:

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

3.配置 Git 和 SSH 密钥

配置完成后,执行以下命令,确保设置正确:

git config --list

4.生成 SSH 密钥

如果你没有现成的 SSH 密钥,可以按以下步骤生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

添加 SSH 公钥到 GitHub
生成完 SSH 密钥后,你需要将公钥添加到 GitHub 账户(可能需要你去创建github账户)。

打开公钥文件:~/.ssh/id_rsa.pub,复制文件内容。
登录 GitHub,进入 Settings -> SSH and GPG keys -> New SSH key。
粘贴复制的公钥,并保存。
测试 SSH 连接
用以下命令测试连接 GitHub:

ssh -T git@ssh.github.com -p 443

注意这里问yes或者no的时候一定要打yes。
如果一切正常,GitHub 会返回类似的消息:

Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

如何在idea上完成git的使用:

在idea上面打开之前命令行下载好的文件,你会看到下面的页面:
在这里插入图片描述
点开版本控制有如下截图:
在这里插入图片描述
这里可以看到你的基友的开发进度,当然前提是你要获取最新的内容(使用idea自带的终端就可以了):

git pull

相关文章:

【Git多人开发与协作之团队的环境搭建】

Git多人开发与协作之团队的环境搭建 新的改变1. Git 的用途2. 分支的概念与类型3. HEAD 和分支指针如何查看 HEAD 指向的位置&#xff1a; 4. 常见的 Git 操作5. 常见问题与解决方法总结GitHub 项目获取实操在新电脑上运行 Git1. 安装 Git2. 配置用户名和邮箱3.配置 Git 和 SSH…...

java基础概念36:正则表达式1

一、正则表达式的作用 作用一&#xff1a;校验字符串是否满足规则&#xff1b;作用二&#xff1a;在一段文本中查找满足要求的内容。——爬虫 二、正则表达式 2-1、字符类 示例&#xff1a; public static void main(String[] args) {System.out.println("a".matc…...

java实现小程序接口返回Base64图片

文章目录 引言I java 接口返回Base64图片接口设计获取验证码图片-base64字符串获取验证码图片-二进制流arraybufferII 小程序端代码过期代码: 显示文件流图片(arraybuffer)知识扩展:微信小程序下载后端返回的文件流引言 场景: 图形验证码 背景: 接口返回arraybuffer的格式…...

网络编程并发服务器的应用

作业2&#xff1a;完成局域网CS模型&#xff0c;局域网内一个服务器&#xff0c;多个客户端连接一个服务器&#xff0c;完成局域网聊天&#xff08;select函数&#xff0c;poll函数&#xff0c;完成TCP并发服务器&#xff09;。 poll函数应用&#xff1a; 服务器部分代码&…...

数据结构——停车场管理问题

目录 1、问题描述2、逐步分析1&#xff09;涉及操作2&#xff09;代码实现 3、代码整合 1、问题描述 1、题目 设停车场内只有一个可停放n辆汽车的狭长通道&#xff0c;且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序&#xff0c;依次由北向南排列&#x…...

道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选

在现代农业的发展进程中&#xff0c;科技的力量正日益凸显。其中&#xff0c;移动式水肥一体机以其独特的可移动性、智能化以及实现水肥一体化的卓越性能&#xff0c;成为了农业领域的一颗璀璨新星。它不仅改变了传统的农业灌溉施肥方式&#xff0c;更为农业生产带来了高效、精…...

AI实习--常用的Linux命令

一、基础命令 1. 切换到根目录。 cd ~ 2. 返回上一级目录。 cd .. 3. 查看当前目录下包括哪些文件和文件夹。 ls 4. 查看当前路径。 pwd 5. 将文件或文件夹剪切到目标目录下。 mv 文件所在路径 目标路径 6. 查看文本文件内容。 cat 文本文件名 7. 创建文件或文件夹…...

Python学习指南 + 谷歌浏览器如何安装插件

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 前言 Python 官方文档的使用 谷歌浏览器中如何安装插件 前言 在学习Python时&#xff0c;我们可能会出现这样的困惑&#x…...

研0找实习【学nlp】15---我的后续,总结(暂时性完结)

当下进展成果&#xff1a; nlptransformerpytorchhuggingfacebert简历环境配置表情识别文本分类 断更了快1个月&#xff0c;2个礼拜找实习&#xff0c;1个礼拜伤心&#xff0c;1个礼拜想我要干什么…… 承认自己的才疏学浅&#xff0c;了解了leetcode&#xff0c;和老师商量了…...

kylin麒麟银河桌面版操作系统安装部署

本文主要描述kylin麒麟银河桌面版操作系统的安装&#xff0c;该操作系统的安装源文件可以从kylin麒麟银河官方网站上下载&#xff0c;商业版本需要申请试用&#xff0c;开源版本可以直接下载使用。 如上所示&#xff0c;x86芯片处理器架构的请下载INTEL版本&#xff0c;华为海思…...

MyBatis插件原理及应用

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 介绍<plugins>标签解析拦截器链的工作原理插件的应用场景MyBatis插件应用的四个组件InterceptorChain和Interceptor MyBatis框架…...

[M最短路] lc743. 网络延迟时间(spfa最短路+单源最短路)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;743. 网络延迟时间 相关链接&#xff1a; [图最短路模板] 五大最短路常用模板) 2. 题目解析 怎么讲呢&#xff0c;挺抽象的…很久没写最短路算法了。反正也是写出来了&#xff0c;但脱离了模板&#xff0c;把…...

MySQL 中的锁

MySQL 中的锁&#xff1a;全面解析与应用指南 在 MySQL 数据库的复杂世界里&#xff0c;锁是确保数据一致性、完整性以及并发控制的关键机制。无论是简单的小型应用还是复杂的企业级系统&#xff0c;深入理解 MySQL 中的锁对于优化数据库性能、避免数据冲突和错误都具有至关重要…...

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…...

【C++11】尽显锋芒

(续) 一、可变参数模板 C11支持可变参数模板&#xff0c;也就是说支持可变数量参数的函数模板和类模板&#xff0c;可变数目的参数被称 为参数包&#xff0c;存在两种参数包&#xff1a;模板参数包&#xff0c;表示零或多个模板参数&#xff1b;函数参数包&#xff1a;表示零…...

掌握控制流的艺术:Go语言中的if、for和switch语句

标题:掌握控制流的艺术:Go语言中的if、for和switch语句 在Go语言的编程世界中,控制流语句是构建程序逻辑的基石。if语句、for循环和switch语句是我们最常用的控制流工具,它们让我们能够根据不同的条件执行不同的代码块。本文将深入探讨这些语句的使用方法、技术细节和实际…...

飞书会话消息左右排列

飞书会话消息左右排列 1. 飞书登录后&#xff0c;点击头像&#xff0c;弹出菜单有个按钮设置 2. 3....

.net 支持跨平台(桌面)系列技术汇总

1. 首先微软老大哥的.net core 。 .NET Core 是微软开发的一个跨平台、高性能的开源框架&#xff0c;用于构建云和互联网连接的新型应用。 它允许开发者在 Windows、macOS 和 Linux 上使用喜爱的开发工具进行开发&#xff0c;并支持部署到云或本地环境。 .NET Core 是对 .NET …...

springboot 静态资源访问

最近在学习springboot&#xff0c;在学习中一个静态资源访问&#xff0c;难道了我三天&#xff0c;在网上找了很多的资料&#xff0c;又是配置&#xff0c;又是重写WebMvcConfigurationSupport&#xff0c;因为以前没有接触&#xff0c;本来很简单的事情走了很多弯路&#xff0…...

【linux学习指南】初识Linux进程信号与使用

文章目录 &#x1f4dd;信号快速认识&#x1f4f6;⽣活⻆度的信号&#x1f4f6; 技术应⽤⻆度的信号&#x1f309; 前台进程&#xff08;键盘&#xff09;&#x1f309;⼀个系统函数 &#x1f4f6;信号概念&#x1f4f6;查看信号 &#x1f320; 信号处理&#x1f309; 忽略此信…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...