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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gtfToGenePred如何下载

gtfToGenePred 是 UCSC 提供的一款工具,用于将 GTF(Gene Transfer Format)文件转换为 GenePred 格式的基因注释文件。由于不同的生物信息学分析工具对基因注释文件的格式要求不同,gtfToGenePred 的主要作用就是让 GTF 文件能够兼容…

PH热榜 | 2024-11-09

DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 在线预览 1. Shootmail 标语:像Notion一样,可以创建漂亮邮件模板和邮件内容的工具。 介绍:想象一下…

大数据机器学习算法与计算机视觉应用03:数据流

Data Stream Streaming ModelExample Streaming QuestionsHeavy HittersAlgorithm 1: For Majority elementMisra Gries AlgorithmApplicationsApproximation of count Streaming Model 数据流模型 数据流就是所有的数据先后到达,而不是同时存储在内存之中。在现…

嵌入式学习第21天Linux基础

目录 第1章 Linux 系统介绍 1.1 Unix 操作系统(了解) 1.2 Linux 操作系统(了解) 1.3 Linux 操作系统的主要特性(重点) 1.4 Linux 与 Unix 的区别与联系 1.5 GUN 与 GPL(了解) …

【数学二】线性代数-线性方程组-齐次线性方程组、非齐次线性方程组

考试要求 1、会用克拉默法则. 2、理解齐次线性方程组有非零解的充分必要条件及非齐次线性方程组有解的充分必要条件. 3、理解齐次线性方程组的基础解系及通解的概念,掌握齐次线性方程组基础解系和通解的求法. 4、理解非齐次线性方程组的解的结构及通解的概念. 5、会用初等行变…

【小程序安全】小程序反编译

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 0x01 前期准备 知识点准备-小程序结构 1.主体结构 小程序包含一个描述整体程序的 app 和多个描述各自页…

Vue 状态管理工具vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 解决了多个组件共享状态时,状态的可维护性和可预测性问题。 Vuex 的核心概念 State&…

C++ : STL容器(适配器)之stack、queue剖析

STL容器适配器之stack、queue剖析 一、stack、queue的接口(一)stack 接口说明(二)queue 接口说明 二、stack、queue的模拟实现(一)stack、queue是容器适配器stack、queue底层默认容器--deque1、deque概念及…

React官网生成Recat项目的区别

1. Next.js 特点: 页面级路由:使用文件系统路由,基于 /pages 文件夹的结构自动创建 URL 路径。渲染模式:支持三种渲染模式:静态生成 (SSG)、服务器端渲染 (SSR) 和客户端渲染 (CSR),并允许根据页面的具体需…

Kubernetes的基本构建块和最小可调度单元pod-0

文章目录 一,什么是pod1.1pod在k8s中使用方法(1)使用方法一(2)使用方法二 1.2pod中容器的进程1.3pod的网络隔离管理(1)pause容器的作用 1.4 Pod分类:(1)自主式…

【CUDA】认识CUDA

目录 一、CUDA编程 二、第一个CUDA程序 三、CUDA关键字 四、device管理 4.1 初始化 4.2 Runtime API查询GPU信息 4.3 决定最佳GPU CUDA C 编程指南CUDA C在线文档:CUDA C 编程指南 CUDA是并行计算的平台和类C编程模型,能很容易的实现并行算法。只…

AtomicInteger 和 AtomicIntegerFieldUpdater的区别

AtomicInteger 和 AtomicIntegerFieldUpdater 都是 Java 并发库中用于处理原子操作的类。 1. AtomicInteger 定义: AtomicInteger 是一个原子类,它封装了一个 int 值,并提供了对该值进行原子操作的方法。使用场景: 适用于需要对单个整数值进行原子操作…

知识中台如何在精简供应链管理中发挥作用?

您如何与供应商沟通并分享您的最佳实践?您如何确保供应商了解您的基准?如果您正在为这些问题烦恼,请不要担心,本文章将为您提供宝贵的见解。 构建具备弹性的供应链模型,其关键在于知识中台的数据质量。若缺乏数据支撑…

Python 在PDF中绘制形状(线条、矩形、椭圆形等)

在PDF中绘制图形可以增强文档的视觉效果。通过添加不同类型的形状,如实线、虚线、矩形、圆形等,可以使文档更加生动有趣,提高读者的阅读兴趣。这对于制作报告、演示文稿或是教材特别有用。本文将通过以下几个示例介绍如何使用Python 在PDF中绘…

Gitlab-执行器为Kubetnetes时的注意事项,解决DNS解析问题

一、Gitlab-Runner 这里对于Runner的理解非常重要。 具体执行ci流水线的叫执行器。执行器可以部署是shell、docker、k8s的pod.执行完任务则生命周期结束。 管理执行器的叫Gitlab-Runner。Runner则是与Gitlab Server的Ci agent.(可以简单这么理解) 二、执行器为Kubetnetes时,DN…

20241108,LeetCode 每日一题,用 Go 计算字符串中最长无重复字符

题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “…

hudi写时复制与读时合并

COPY_ON_WRITE 是 Apache Hudi 中的一种表存储模式,指的是 写入数据时复制(写时复制) 的策略。具体来说,它描述了在更新、插入或删除数据时的存储方式和行为。 详细解释: Hudi 目前提供两种主要的存储类型&#xff1…

大数据新视界 -- 大数据大厂之 Impala 性能优化:新技术融合的无限可能(下)(12/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

讨论一个mysql事务问题

最近在阅读一篇关于隔离级别的文章,文章中提到了一种场景,我们下面来分析一下。 文章目录 1、实验环境2、两个实验的语句执行顺序3、关于start transaction和start transaction with consistent snapshot4、实验结果解释4.1、实验14.2、实验24.3、调整实…

json绘制热力图

首先需要一段热力信息的json,我放在头部了。 然后就是需要de-geo库了。 实现代码如下: import * as d3geo from d3-geoimport trafficJSON from ../assets/json/traffic.jsonlet geoFun;// 地理投影函数// let info {max: Number.MIN_SAFE_INTEGER,mi…