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

ops/2024/11/30 20:40:07/

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

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

新的改变

最近要完成我们的小组作业了,对此我觉得做一些新的尝试,比如教会团队人员如何正确使用 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

最终如果出现问题22: Connection refused:

如果用git去测试github连接时出现错误:

PS C:\Users\yuanrui1> ssh -T git@github.com
ssh: connect to host github.com port 22: Connection refused

可以通过下面解决:(切换连接端口)

1.修改你生成的.ssh 目录下的config的文件:

Host github.comHostname ssh.github.comPort 443User gitIdentityFile ~/.ssh/id_rsa

2.在命令行运行下面的命令。

PS C:\Users\yuanrui1> Get-Service -Name ssh-agent | Set-Service -StartupType Manual
PS C:\Users\yuanrui1> Start-Service ssh-agent
PS C:\Users\yuanrui1> ssh-add C:\Users\yuanrui1\.ssh\id_rsa
Identity added: C:\Users\yuanrui1\.ssh\id_rsa (years_GG@outlook.com)
PS C:\Users\yuanrui1> ssh-add -l
4096 SHA256:5TTtp+Ft5/SoZr61z181lfLvCPbWBOIZ6DKWSq872mo years_GG@outlook.com (RSA)
PS C:\Users\yuanrui1> notepad C:\Users\yuanrui1\.ssh\config
PS C:\Users\yuanrui1> ssh -T git@github.com
Hi yearsGG! You've successfully authenticated, but GitHub does not provide shell access.

http://www.ppmy.cn/ops/138026.html

相关文章

论文笔记(五十九)A survey of robot manipulation in contact

A survey of robot manipulation in contact 文章概括摘要1. 引言解释柔顺性控制的概念&#xff1a;应用实例&#xff1a; 2. 需要接触操控的任务2.1 环境塑造2.2 工件对齐2.3 关节运动2.4 双臂接触操控 3. 接触操控中的控制3.1 力控制3.2 阻抗控制3.3 顺应控制 4. 接触操控中的…

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。-多语言

目录 C 语言实现 Python 实现 Java 实现 Js 实现 题目&#xff1a;一个5位数&#xff0c;判断它是不是回文数。即12321是回文数&#xff0c;个位与万位相同&#xff0c;十位与千位相同。 程序分析&#xff1a;学会分解出每一位数。 C 语言实现 #include <stdio.h>…

MySQL中SQL语句的执行过程详解

1. 客户端连接和请求 客户端连接 在MySQL中&#xff0c;客户端连接和请求过程是执行SQL语句的第一步。该步骤主要涉及客户端如何连接到MySQL服务器&#xff0c;以及如何维护和管理客户端与服务器之间的会话。 客户端连接&#xff1a; 连接器&#xff08;Connector&#xff09…

误使用git stash drop删掉本地保存,如何恢复

前言&#xff1a; 在使用git时候我们会临时切换一些分支&#xff0c;而切换时候你本地会有一些更改了的代码&#xff0c;但是这些代码还没有写完整&#xff0c;所以我们一般会进行git stash save "名字" 本地保存一下。然后等后面代码切换回来之后&#xff0c;再 gi…

抽卡代码(简陋) C#

简单写了一个抽卡代码&#xff0c;没有修饰&#xff0c;用起来其实还挺难受的。抽10连的时候按0可以跳过抽取过程。 using System; using System.Collections.Generic; using System.Threading;class Program {static void Main(){//随机数初始化Random random new Random();…

Python 3 教程第34篇(MySQL 数据库连接 - PyMySQL 驱动)

Python3 MySQL 数据库连接 - PyMySQL 驱动 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库&#xff0c;并实现简单的增删改查。 什么是 PyMySQL&#xff1f; PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库&#xff0c;Python2 中则使用 mysqldb。 PyMySQ…

QT的exec函数

在Qt框架中&#xff0c;exec()方法是QDialog类&#xff08;及其子类&#xff09;的一个成员函数&#xff0c;用于以模态&#xff08;modal&#xff09;方式显示对话框。当exec()被调用时&#xff0c;它会启动一个局部的事件循环&#xff0c;这个循环会阻塞对对话框之外的其他窗…

2024.9 Pruning Cycles in UMLS Metathesaurus: A NeuroSymbolic AI Approach

UMLS Metathesdragon 中的修剪周期&#xff1a;一种神经符号 AI 方法 UMLS Metathesdragon 中的修剪周期&#xff1a;一种神经符号 AI 方法 Richard Wallace1、Ravi Bajracharya1、Jans Aasman1 和 Craig Norvell1 Franz Inc https://allegrograph.com/wp-content/uploads/2…