Git介绍以及SSH配置

目录

1. Git介绍

1.1 Git的基本原理

1.2 Git的主要功能

1.3 Git的优点

1.4 Git的缺点

2. Git安装

3. SSH配置


1. Git介绍

Git是一款功能强大的分布式版本控制系统,最初由Linux操作系统的开发者Linus Torvalds在2005年开发,用于管理Linux内核的源代码,现已成为广泛使用的版本控制工具之一。以下是对Git的详细介绍:

1.1 Git的基本原理

  • 分布式版本控制:Git将整个代码库复制到每个开发者的本地计算机上,每个开发者都有自己的完整副本。这意味着开发者可以在没有网络连接的情况下继续工作,并且可以在不同的分支上进行独立开发。
  • 快照式存储:Git保存的是文件提交时的快照,而不是差异内容。这样可以更全面地跟踪文件历史和版本变化。
  • SHA-1算法保证完整性:Git使用SHA-1加密算法对文件数据进行校验,确保数据的完整性和一致性。

1.2 Git的主要功能

  • 克隆远程仓库:从服务器克隆版本数据库(包括代码和版本信息)到本地。
  • 提交代码:在自己的分支上创建新代码或修改现有代码,并提交到本地仓库。
  • 合并分支:将不同的分支合并到一个共同的分支上,例如将功能分支合并到主分支。
  • 拉取远程代码:从远程仓库获取最新代码,并与本地代码合并。
  • 解决代码冲突:当两个分支的代码同时修改了同一部分,Git会自动检测冲突,需要开发者手动解决。
  • 查看提交历史:查看代码提交的历史记录,包括每次提交的作者、日期和提交信息。
  • 标签管理:为特定的提交创建标签,便于跟踪重要版本。

1.3 Git的优点

  • 分布式:提高了开发的灵活性和效率,开发者可以在离线状态下进行操作。
  • 强大的分支管理:可以轻松地创建、合并和删除分支,使得多人协作开发变得更加方便。
  • 快速高效:采用快照方式进行版本控制,文件只需通过计算hash值来进行唯一标识,因此在提交、切换分支等操作上非常快速。
  • 本地保存完整历史记录:可以随时查看代码的变更历史和版本演进,不受网络连接的限制。
  • 安全可靠:采用了SHA-1算法对每个文件进行hash计算,从而确保文件的完整性。并且支持对代码提交进行签名,以确保代码的来源可信。
  • 强大的协作功能:提供了一系列强大的协作功能,例如代码的合并、冲突解决、代码审查等。

1.4 Git的缺点

  • 学习曲线陡峭:Git相对于其他版本控制系统来说,学习曲线较陡峭,需要一定的时间和精力去掌握。
  • 需要命令行操作:Git的使用大部分情况下都倾向于使用命令行,对于不熟悉命令行操作的用户来说可能会感到不便。
  • 分布式架构导致仓库庞大:每个开发者都拥有完整的代码仓库的副本,当仓库较大时,每次克隆或拉取代码都需要较长的时间和大量的磁盘空间。
  • 文件冲突解决复杂:需要手动合并代码,对于不熟悉解决冲突的开发者来说可能会产生困惑。
  • 无法跟踪空的文件夹:只能跟踪具有文件的文件夹,无法直接跟踪空的文件夹。
  • 不适用于大型二进制文件:对于大型的二进制文件(如图像、音频、视频)的版本控制效率较低。
  • 不适用于大规模团队协作:当多个开发者同时对同一分支进行操作时,可能会导致冲突和性能下降。

2. Git安装

在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系统中,在 Terminal 里尝试首次运行 'git' 命令即可。

$ git --version

如果没有安装过命令行开发者工具,将会提示你安装。

如果你想安装更新的版本,可以使用二进制安装程序。 官方维护的 macOS Git 安装程序可以在 Git 官方网站下载,网址为 Redirecting…。

3. SSH配置

步骤一:先确认Git是否已经配置了ssh,存在id_rsa和id_rsa.pub说明已经配置过ssh。

ls -al ~/.ssh

步骤二:如果Git还没配置ssh,那么按照接下来的配置去设置。

#配置用户名
git config --global user.name "userName"

步骤三:配置用户名关联的邮箱

git config --global user.email "userEmail"

步骤四:继续在命令行敲入一下命令,生成公钥和私钥。

#输入这个命令之后连续敲击三次 回车键
ssh-keygen -t rsa -C "userEmail"

步骤五:查看生成的公钥,并把公钥复制到github上。

cat ~/.ssh/id_rsa.pub

公钥复制到github上(用户头像 -> setting -> SSH and GPG keys)

步骤六:找一个github项目clone到本地。

git clone git@github.com:xxx/xxxx.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912359.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java多线程sleep() 和 wait() 有什么区别?

大家好,我是锋哥。今天分享关于【java多线程sleep() 和 wait() 有什么区别?】面试题。希望对大家有帮助; java多线程sleep() 和 wait() 有什么区别? 在Java中,sleep() 和 wait() 都是多线程编程中常用的控制线程执行的方法。它们看似有相似…

从无音响Windows 端到 有音响macOS 端实时音频传输播放

以下是从 Windows 端到 macOS 端传输音频的优化方案,基于上述链接中的思路进行调整: Windows 端操作 安装必要软件 安装 Python(确保版本兼容且已正确配置环境变量)。安装 PyAudio 库,可通过 pip install pyaudio 命令…

测度论原创(三)

Morden Prob 文章目录 Morden ProbWeek3多维扩展和随机向量定理3.1推论:random variable的变换定理3.2 连续函数的可测性定理3.3 可测函数的线性组合关于拓展实数集的延伸定理3.4 可测函数的极限依旧为可测性随机变量的概率律(Law of X X X)…

【C++】C++移动语义、左值右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符

二十五、C移动语义、左值和右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符 本部分讨论一些更高级的C特性:C移动语义。但是讲移动语义之前我们得先了解什么左值右值、左值引用和右值引用。 1、C的左值和右值、左值引用和右值引用左值是有地址的…

uniapp实现H5和微信小程序获取当前位置(腾讯地图)

之前的一个老项目,使用 uniapp 的 uni.getLocation 发现H5端定位不准确,比如余杭区会定位到临平区,根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本,是直接使用高德地图的api获取定位。 1.首…

Pycharm,2024最新版Pycharm下载安装配置教程!

目录 1、Pycharm 简介2、Pycharm下载3、环境变量的配置4、Pycharm的使用 1、Pycharm 简介 Pycharm资料领取不收米 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Py…

(十三)JavaWeb后端开发——MySQL2

目录 1.DQL数据查询语言 1.1基本查询 1.2条件查询 where关键字 1.3分组查询 1.4排序查询 1.5分页查询 2.多表设计 3.多表查询——联查 4.多表查询——子查询​ 5.MySQL 事务 6.事务管理(事务进阶) 7.MySQL 索引 1.DQL数据查询语言 分为五大…

C++虚继承演示

在继承中如果出现: 这种情况,B和C都继承了A,D继承了B、C 在D中访问A的成员会出现: 这样的警告 是因为在继承时A出现两条分支:ABD、ACD 编译器不知道访问的A中的元素是经过B继承还是C继承 所以B、C在继承A时要用到…

【论文速看】DL最新进展20241109-图像超分、物理信息神经网络、扩散模型

目录 【图像超分】【物理信息神经网络】【扩散模型】 【图像超分】 [2024 红外图像超分] Infrared Image Super-Resolution via Lightweight Information Split Network 论文链接:https://arxiv.org/pdf/2405.10561v2 代码链接:无 单图像超分辨率&…

革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!

文章目录 零、前言一、ChatGPT最新AI搜索引擎功能操作指导实战1:搜索新闻实战2:搜索天气实战3:搜索体育消息 二、感受 零、前言 大人,时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了,从今天起,ChatGPT…

qt QLocale详解

1、概述 QLocale是Qt框架中的一个类,用于处理与本地化相关的操作。它能够方便地实现日期、时间、数字和货币的格式化和解析,支持不同的语言、区域设置和字符集。QLocale提供了一种跨平台的方式来获取当前系统的语言设置,并返回该语言的本地化…

Linux基础4-进程4(环境变量,命令行参数详解)

上篇文章:Linux基础4-进程3(进程优先级,竞争,独立,并行,并发,进程切换)-CSDN博客 本章重点: Linux中环境变量的理解和使用 目录 一. 环境变量概念和查看环境变量 1.1 环境变量概念 1.2 查看环境变量 二. 获取环境变…

Java学习路线:Maven(一)认识Maven

目录 认识Maven 新建Maven文件 导入依赖 认识Maven Maven是一个Java的项目管理工具,通过Maven,我们可以实现: 项目自动构建,包括代码的编译、测试、打包、安装等依赖管理,快速完成依赖的导入 在学习Maven之前&…

Node.js——fs模块-文件删除

1、在Node.js中,我们可以使用unlink或unlinkSync来删除文件。 2、语法: fs.unlink(path,callback) fs.unlinkSync(path) 参数说明: path 文件路径 callback 操作后的回调函数 本文的分享到此结束,欢迎大家评论区一同讨论学…

PG逻辑复制的REPLICA IDENTITY几种设置

前两天同事问了一个PG的错误,创建一张普通表,insert插入正常,但是执行update和delete时,提示这个错误, 代码语言:javascript 复制 SQL 错误 [55000]: ERROR: cannot delete from table "temp_tb&qu…

【人工智能】利用大语言模型(LLM)实现机器学习模型选择与实验的自动化

文章目录 引言环境准备数据集说明 项目结构主要文件说明 导入必要的软件包软件包功能简述 辅助函数定义加载配置文件加载数据集预处理数据集函数功能详解 集成LLM进行模型选择调用LLM的函数定义函数功能详解 清理和验证LLM的输出清理超参数建议提取模型名称验证超参数修正超参数…

机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着数据采集技术的发展,时间序列数据在各个领域中的应用越来越广泛。时间序列预测旨在基于过去的时间数据来…

Python学习------第四天

Python的判断语句 一、布尔类型和比较运算符 二、 if语句的基本格式 if语句注意空格缩进!!! if else python判断语句的嵌套用法:

Vue3版本的uniapp项目运行至鸿蒙系统

新建Vue3版本的uniapp项目 注意,先将HbuilderX升级至最新版本,这样才支持鸿蒙系统的调试与运行; 按照如下图片点击,快速升级皆可。 通过HbuilderX创建 官方文档指导链接 点击HbuilderX中左上角文件->新建->项目 创建vue3…

让Apache正确处理不同编码的文件避免中文乱码

安装了apache2.4.39以后&#xff0c;默认编码是UTF-8&#xff0c;不管你文件是什么编码&#xff0c;统统按这个来解析&#xff0c;因此 GB2312编码文件内的中文将显示为乱码。 <!doctype html> <html> <head><meta http-equiv"Content-Type" c…