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

Git介绍及配置

目录

Git

GitHub

GitLab

Gitee

配置Git

安装git

初次运行 Git 前的配置

注册一个代码托管平台

用户信息

获取 Git 仓库

初始化仓库

克隆现有的仓库

https方式:

ssh方式:

上传本地项目至Git仓库

https方式

ssh-key方式

添加个人公钥​

相关概念

 1. 工作区(Working Directory)

2. 暂存区(Stage/Index)

3. Git 目录(Repository 或 .git 目录)


Git

Git 是一个开源的分布式版本控制系统(DVCS),用于高效地处理从小到大的所有项目。Git 由林纳斯·托瓦兹(Linus Torvalds)创建,最初是为了管理 Linux 内核的开发而设计。Git 允许开发者在本地进行代码的版本控制,包括提交、回滚、分支、合并等操作,而且支持多用户协作,通过网络进行代码的共享和同步。

GitHub

GitHub 是一个基于 Git 的开源代码托管平台,由 GitHub 公司开发和维护。GitHub 提供了强大的代码管理、协作和分发功能,支持代码仓库的创建、版本控制、问题跟踪、功能请求、合并请求(Pull Requests)、代码审查、项目管理等。GitHub 还拥有庞大的开发者社区,是开源项目的主要托管平台之一。GitHub 提供了免费和付费两种服务模式,付费服务提供更多的功能和资源。

GitLab

GitLab 是一个开源的代码托管平台,提供了与 GitHub 类似的功能,但它是完全开源的,并且可以部署在自己的服务器上。GitLab 允许企业或组织拥有自己的代码仓库管理平台,实现代码的自给自足和安全可控。GitLab 提供了代码托管、代码审查、CI/CD(持续集成/持续部署)、问题跟踪、项目管理等功能,并且支持多种编程语言和框架。GitLab 社区版和企业版都提供了丰富的功能,企业版还提供了额外的企业级支持和功能。

Gitee

Gitee 是中国的代码托管平台,类似于 GitHub 和 GitLab,但主要面向中国用户。Gitee 提供了代码托管、版本控制、项目管理、团队协作等功能,支持 Git 和 SVN 两种方式。Gitee 特别注重中文用户的使用体验,提供了丰富的中文文档和社区支持。对于在中国进行软件开发的企业和个人来说,Gitee 是一个很好的选择,因为它提供了更快的访问速度和更贴近国内用户需求的服务。

总结来说,Git 是一个分布式版本控制系统,而 GitHub、GitLab 和 Gitee 则是基于 Git 的代码托管平台,它们提供了代码管理、协作和分发等功能。这些工具和平台在软件开发过程中发挥着重要作用,帮助开发者更好地管理代码、协作开发和分享知识。

配置Git

linux上传代码至git的操作:

安装git

在linux系统里安装git客户端/服务端的软件

centos:

sudo yum install git-all -y

ubantu:

 sudo apt install git-all -y

初次运行 Git 前的配置

Git 自带一个 git config 的工具来帮助设置控制 Git 行为的配置变量。

这些变量存储在三个不同的位置:

1./etc/gitconfig 文件:

包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)

2.~/.gitconfig 或 ~/.config/git/config 文件:

只针对当前用户。 你可以传递 --global 选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效。

3.当前使用仓库的 Git 目录中的 config 文件(即 .git/config):

针对该仓库。 你可以传递 --local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它。 (当然,你需要进入某个 Git 仓库中才能让该选项生效。)

注册一个代码托管平台

1.这里以gitee为例:

2.设置你的gitee名称并绑定邮箱

3.创建一个仓库

用户信息

安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。

这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:

git config --global user.name "yourName"
git config --global user.email yourEmail@example.com

如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。

当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有              --global 选项的命令来配置。

获取 Git 仓库

初始化仓库

在已存在目录中初始化仓库

如果你有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,首先需要进入该项目目录中:

mkdir /gitee/

cd /gitee/

之后执行:

git init

执行这个命令后,Git 会在当前目录下创建一个名为 .git 的隐藏目录(如果当前目录中已经存在 .git 目录,命令会失败),这个目录包含了 Git 仓库的所有元数据,如配置信息、暂存区信息、历史记录等。

初始化 Git 仓库后,你就可以开始使用 Git 来管理你的项目了,比如添加文件到暂存区(git add)、提交修改到仓库(git commit)、查看项目历史(git log)等。

记住,.git 目录是 Git 仓库的核心,它包含了所有 Git 需要跟踪的信息,因此不应该直接修改这个目录中的文件。

克隆现有的仓库

克隆仓库的命令是 git clone <url> 。可以用下面的命令:

https方式:

git clone https://gitee.com/xxx/linux-registry.git

ssh方式:

git clone git@gitee.com:xxx/linux-registry.git

这会在当前目录下创建一个名为 “linux-registry” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。

所有的项目文件已经在这个新建的 linux-registry 文件夹里面了,准备就绪等待后续的开发和使用。

上传本地项目至Git仓库

https方式

拷贝想要上传的本地项目文件至工作区里

cp /root/test.sh /root/gitee/linux-registry

将当前工作区的内容添加到暂存区

 pwd
/root/gitee/linux-registry

git add .

将暂存区的文件提交到本地仓库

git commit -m "test"

-m 打一个标签信息"test"

[master 51160d2] test
 1 file changed, 1 insertion(+)
 create mode 100644 test.sh

将本地仓库的文件上传到gitee仓库

git push

Username for 'https://gitee.com': yourGiteeName#输入你的gitee的用户名
Password for 'https://liuzh@gitee.com': #输入你的gitee密码

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/hezi-fungus/linux-registry.git
   00a2172..51160d2  master -> master

至此,就上传成功了

ssh-key方式

  1. 生成 RSA 密钥

ssh-keygen -t rsa

输出:

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/hezi-fungus/linux-registry.git
   00a2172..51160d2  master -> master

  • 中间通过三次回车键确定
  1. 查看生成的 SSH 公钥和私钥:

ls ~/.ssh/

  • 私钥文件 id_rsa
  • 公钥文件 id_rsa.pub
  1. 读取公钥文件 ~/.ssh/id_rsa.pub

cat ~/.ssh/id_rsa.pub

输出,如:

ssh-ed25519 AAAxxxxxxxrmgjCiF4K Gitee SSH Key

复制终端输出的公钥。

添加个人公钥​

复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加个人公钥」 ,将生成的公钥添加到仓库中。

添加成功后,就可以使用 SSH 协议对仓库进行拉取,无需再进行账号密码的输入

pwd

/root/gitee/linux-registry

ls

这里将本地的nginx.tar的镜像复制了进来

git add .

git commit -m"nginxImage"

git push

相关概念

 1. 工作区(Working Directory)

工作区是你当前正在操作的目录。

当你克隆(git clone)或初始化(git init)一个 Git 仓库后,工作区就是你在电脑文件系统中看到的目录和文件。

你可以在这个区域中对文件进行修改、添加新文件或删除文件等操作。

Git 会追踪这些变更,但直到你显式地告诉 Git 去记录这些变更之前,这些变更都是未提交的。

2. 暂存区(Stage/Index)

暂存区是一个中间区域,介于工作区和 Git 目录之间。

当你使用 git add 命令将文件添加到 Git 仓库时,这些文件实际上是被添加到了暂存区,而不是直接提交到了 Git 目录(仓库)。

暂存区的作用是允许你在提交之前对即将提交的内容进行最后的检查和确认。

你可以使用 git status 命令来查看当前工作区和暂存区的状态。

3. Git 目录(Repository 或 .git 目录)

Git 目录(也称为 .git 目录)是 Git 用来存储项目元数据和对象数据库的地方。

这是一个隐藏目录,位于你的项目根目录下(除非你使用了一个不同的位置来初始化仓库)。

.git 目录包含了项目的所有历史记录、分支信息、配置信息(如用户名称和电子邮件地址)以及暂存区信息等。

当你使用 git commit 命令提交变更时,Git 会将暂存区中的文件快照永久性地保存到 Git 目录中,并创建一个指向这个快照的提交(commit)对象。这个提交对象包含了指向父提交(如果有的话)的指针、作者和提交者信息、时间戳以及一个指向暂存区内容快照的指针。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一、什么是 mvvm? MVC、MVP、MVVM三种模式的区别与详解
  • [数据集][目标检测]扳手检测数据集VOC+YOLO格式1042张1类别
  • 前同事2024年接私活已入百万,都是用这几个开源的SpringBoot项目
  • 封装了一个iOS评论弹窗
  • 使用js代码模拟React页面中input文本框输入
  • YOLOv8实例分割+双目相机实现物体尺寸测量
  • LSI-9361阵列卡笔记
  • 手机谷歌浏览器怎么用
  • C/C++ 多线程[1]---线程创建+线程释放+实例
  • redis的RDB快照详解
  • C学习(数据结构)-->二叉树
  • SpringBoot依赖之Spring Data Redis 实现地理坐标(Geospatial)
  • 响应式Web设计:纯HTML和CSS的实现技巧-1
  • Java 入门指南:注解(Annotation)
  • Linux系统下的容器安全:深入解析与最佳实践
  • 【技术性】Search知识
  • 03Go 类型总结
  • es6--symbol
  • fetch 从初识到应用
  • JavaScript实现分页效果
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • leetcode-27. Remove Element
  • MySQL数据库运维之数据恢复
  • pdf文件如何在线转换为jpg图片
  • vuex 笔记整理
  • Vue官网教程学习过程中值得记录的一些事情
  • Vue全家桶实现一个Web App
  • Yeoman_Bower_Grunt
  • 闭包--闭包作用之保存(一)
  • 从零开始在ubuntu上搭建node开发环境
  • 翻译--Thinking in React
  • 两列自适应布局方案整理
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 新手搭建网站的主要流程
  • raise 与 raise ... from 的区别
  • ​批处理文件中的errorlevel用法
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #微信小程序:微信小程序常见的配置传值
  • (09)Hive——CTE 公共表达式
  • (HAL库版)freeRTOS移植STMF103
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)原生js案例之数码时钟计时
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (一)Linux+Windows下安装ffmpeg
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .net CHARTING图表控件下载地址
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET开发不可不知、不可不用的辅助类(一)
  • @angular/cli项目构建--Dynamic.Form