0


【Git进行版本控制———Windows和Linux平台下Git提交工程到Github和Gitee的记录】

目录

前言

  • 众所周知,Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目, 是 Linus Torvalds为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件,是目前企业端或是个人爱好者用于版本控制的首选工具,因此学习Git很有必要性,更多关于Git的介绍可以参照菜鸟教程。
  • Git提供本地的版本控制提交到远程库的操作,远程库有利于团队协作和开源分享。目前常用的远程库主要有GithubGitLabGitee等,前两者是国外的远程代码托管库,需要一些魔法才能打开后者则是国内,无语言和魔法的限制。所以本文基于Github和Gitee进行操作。

Git

Git基本概念

工作区:电脑里能看到的目录
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:
Git文件结构

Git下载

首先先在自己的操作系统上下载一下Git。

Windows平台可以通过Git官网进行下载后,在待提交工程目录下右键打开Git bash,即Git的命令行交互,如下图
在这里插入图片描述

在这里插入图片描述

Linux平台(这里以ubuntu为例)可以通过命令进行下载,并查看版本:

#下载 Git>sudoapt-getinstallgit#检查版本号>git--version

然后切换到待提交工程的目录下。

由于Git和Linux均为同一位大神开发,所以在Linux命令行可以无缝运行Git bush。

Git基本操作

在这里插入图片描述
以上是Git操作流程图,下面通过一些命令来实践:

#在提交工程目录下生成 .git 文件夹,初始化本地仓库>git init
#将工作区的内容添加到暂存区,具体底层是通过链表来实现的#file 是选择添加到暂存区的文件 >gitaddfile#如果全部添加到暂存区则可以使用 >gitadd.#将工程从暂存区提交到本地仓库#first commit 处可以填写提交的信息 >git commit -m"first commit"

至此,已经将本地代码同步到本地库中,在下次修改后,可以从
git add file 重复以上命令 。

此外可以进行查询参考日志查询日志切换版本等操作:

#查询参考日志>git reflog

在这里插入图片描述
黄色字体标注的是该版本的版本号

#查询日志>git log

请添加图片描述

#切换版本,重置当前 HEAD 到指定状态,其中xxx是版本号git reset --hard xxx

在这里插入图片描述
除此之外,Git还提供创建分支等本地操作,可以参照Git基本操作进行学习和实践。

配置SSH Key

SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。

Git可以通过SSH协议提交文件,由于底层原理较为复杂,笔者不在此过多赘述,详情可见SSH详细解释。

SSH验证原理

SSH登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在Git中一般命名为id_rsa.pub, id_rsa。一般本地生成一个密钥对,其中公钥放到远程主机,私钥保存在本地。当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求,远程收到消息后,随机生成一个字符串并用公钥加密,发回给本地。本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程,远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。

SSH验证注意

  • SSH Key的配置是针对每台主机的
  • SSH Key的配置的好处是可以在一台主机上推送远程库不用输入账号和密码

SSH实现方法

1.检查本地主机是否已经存在SSH Key

在这里插入图片描述
出现id_rsa.pub, id_rsa文件表明已经存在。

2.如果未生成则生成SSH Key

#运行后进行三次回车,不输入> ssh-keygen -t rsa -C"[email protected]"

生成后重复第一步

  1. 获取SSH Key公钥内容(id_rsa.pub
>cd ~/.ssh  
>cat id_rsa.pub

在这里插入图片描述

4.Github账号上添加公钥

在这里插入图片描述

5.验证是否设置成功

>ssh-T [email protected]

在这里插入图片描述

GitHub&Gitee

在将本地库提交到远程库之前,先在GitHub上新建一个仓库,并且记住仓库的SSH密匙
在这里插入图片描述
Gitee同理找到SSH密匙

Git远程命令

#将本地工程推送到 master 分支,xxx是SSH密匙>git push -u xxx master

或者使用

# 建立 main 分支>git branch -M main
# 建立本地远程库关联并将ssh密匙命名为 origin>git remote add origin [email protected]:xxx/xxx.git
# 将本地库推送到远程库>git push -u origin main

此时,查看仓库即可看到本地库已经被成功推送到远程库。

推送问题&解决

推送过程中会出现多种报错,很多在网络上已经有成熟的解决办法,故在此只列举笔者认为需要说明的问题

大文件传输问题

问题描述:在用GitHub作为远程库推送工程时出现了如下报错,大致上意为单个文件限制100MB,超过100MB的文件推送失败,导致整个工程推送失败

在这里插入图片描述

解决方案:在检索中发现有大神开发了关于GitHub大文件传输的工具Git Large File Storage (LFS) 。
官网给出了工具的下载和使用方法:

#安装lfs>git lfs install#追踪大文件的文件类型>git lfs track "*.psd">gitadd file.psd
#添加追踪文件>gitadd .gitattributes
>git commit -m"Add design file">git push origin main

在这里插入图片描述

在此要注意,Windows平台下下载Git-LFS后要将文件放到Git\bin路径下。

但是在使用后,还是有了类似报错,结果过了会收到了GitHub发来的邮件
在这里插入图片描述
大意:您已经在您的个人帐户***上使用了100%的Git LFS数据计划。请购买额外的数据包来覆盖您的带宽和存储使用情况:https://github.com/account/billing/data/upgrade当前使用截至18 Feb 2024 10:17AM UTC:带宽:0.0 GB /1 GB(0%)存储:1.08 GB / 1 GB (108%)
原来这开源的工具在传输时工程大小不能超过1GB,不然要付费。这是开源?
于是乎我转战Gitee,不用Git LFS,也成功上传了工程文件

在这里插入图片描述

至此我只想说一句:国产NB 【狗头,狗头,狗头】

参考

  1. https://blog.csdn.net/weixin_42310154/article/details/118340458
  2. https://blog.csdn.net/SunnyZhangC/article/details/122874089
  3. https://blog.csdn.net/qq_39735940/article/details/115381361
标签: git windows linux

本文转载自: https://blog.csdn.net/PATIENTHZ/article/details/136163568
版权归原作者 patientZhuoHu 所有, 如有侵权,请联系我们删除。

“【Git进行版本控制———Windows和Linux平台下Git提交工程到Github和Gitee的记录】”的评论:

还没有评论