git常用命令(git github ssh)

目录

  • 1、语法说明
  • 2、本地仓库相关操作
    • 建立一个git文件(git init)
    • 把工作区的文件添加到暂存区(git add)
    • 把暂存区的文件添加到本地仓库(git commit)
    • 查看暂存区和本地仓库中的文件(git ls-files)
    • 查看文件夹下所有文件的状态(git status)
    • 查看版本库中的提交记录(git log)
    • 恢复的文件(git checkout)
    • 版本退回(git reset)
    • 查看本地仓库文件和暂存区文件中的内容(git show)
    • 文件差异对比(git diff)
  • 忽略文件(.gitignore)
  • 3、SSH简介(密钥,GitHub)
    • 在本地生成公钥和私钥
    • 在GitHub中添加公钥
  • 4、远程仓库(GitHub)相关操作
    • 下载GitHub上的代码(git clone)
    • 下载被更新代码(git pull)
    • 上传修改的代码(git push)

1、语法说明

被”< >“和"[ ]“包含起来的内容表示用户自己选定的参数。但”< >“是要求用户必须输入的,而”[ ]"表示用户可以根据自己的需要选择输入。
比如git reset的语法是这样的:

git reset commit <commitid> --[option]

其中commitid指的是commit id,可以理解为每一提交到本地仓库之后该仓库状态的ID,利用这个ID我们可以快速定位到某个状态。
那么以下两个种方式都是合理的:

git reset commit 7b0dcac
git reset commit 7b0dcac --soft

2、本地仓库相关操作

建立一个git文件(git init)

用git Bash进入一个新的文件夹,输入以下命令可以建立一个git文件。

git init

查看一下是否有.git文件
在这里插入图片描述

把工作区的文件添加到暂存区(git add)

git add <object_file>

把暂存区的文件添加到本地仓库(git commit)

方法一:提交之后再进入vim编辑器写入这次提交的备注

git commit

方法一:提交的同时写入备注

git commit -m <"any information you wanna write.">

查看暂存区和本地仓库中的文件(git ls-files)

git ls-files

查看文件夹下所有文件的状态(git status)

git status

查看版本库中的提交记录(git log)

版本库即本地仓库。
方法一:直接查看提交记录的完整信息

git log

在这里插入图片描述
箭头所指的是每次提交更新之后本地仓库状态的哈希值,也可以理解该时间点本地仓库状态对应的ID,用的时候经常拿一部分来用即可。
方法二:查看部分重要信息

git log --oneline

在这里插入图片描述
红框内是哈希值的前N位,一般用这个来对应每一个的提交信息即可。

恢复的文件(git checkout)

  1. 在工作区中的文件被修改之后,却想要恢复到修改前的状态,但还未提交到暂存区和本地仓库。
 git checkout <object_file>

注:git checkout默认只是恢复到上一次的状态,如果想要恢复到更久以前的状态,请继续往下看。再者,这一小节的修改,不仅指修改了文件,还可以指文件被删除了。

  1. 在工作区中的文件被修改之后,却想要恢复到修改前的状态,但已经提交到暂存区和本地仓库。
  2. 在工作区中的文件被修改之后,却想要恢复到以前的某个状态,但已经提交到暂存区和本地仓库。
git checkout commit <commitid> <object_file>

注:这里的ID即是第N次提交记录的哈希值。该指令可以把object_file文件恢复到第N次提交时候的状态。

版本退回(git reset)

版本退回有三种方式,分别是soft, hard, mixed。其中的mixed也是默认(default)的方式。
默认的方式下,本地仓库的记录会退回到之前的某个时间点。但工作区和暂存区保持不变。

git reset <commitid>

soft的方式下,本地仓库和暂存区的状态会退回到之前的某个时间点。但工作区保持不变。

git reset <commitid> --soft

soft的方式下,本地仓库、暂存区和工作区的状态都会退回到之前的某个时间点。

git reset <commitid> --hard

用git reset --hard,打个比方。比如你在早上8:00向本地仓库提交了一次更新,版本库记录这次更新后的状态ID为123456。接着你继续工作到中午12:00,但此时你发现你早上的工作方向全错了,想要恢复早上8:00时的文件状态,就可以使用git reset 123456 --hard。

查看本地仓库文件和暂存区文件中的内容(git show)

查看暂存区中文件的内容。

git show :<object_file>

查看本地仓库里某次状态下的文件内容。

git show <commitid>:<object_file>

文件差异对比(git diff)

1、对比工作区和暂存区文件的差异

git diff [object_file]

可以看到这里的object_file是被”[ ]“包含起来的,说明这个参数可写也可不写,不写的话表示对比所有文件的差异,写则表示只对比某个文件的差异。
2、对比工作区和本地仓库文件内容之间的差异

git diff <commitid> [oject_file]

3、对比本地仓库中两个版本的差异

git diff <commitid> <commitid> [object_file] 

4、对比两个文件之间的差异

git diff <object_file_1> <object_file_2>

忽略文件(.gitignore)

在一个项目中,经常会生成一些中间文件,比如C++在Windows编译之后有一个.exe文件,而这些文件我们并不希望它被上传到本地仓库中。那么,我们就可以利用.gitignore文件去隐藏那些我们不希望上传的文件。
第一步:创建一个.gitignore文件

vim .gitignore

第二步:在.gitignore文件里写入我们希望被忽略的文件名。(比如所有的.exe文件)

echo *.exe -> .gitignore

3、SSH简介(密钥,GitHub)

在传统的网络通信当中,访问一个网站存在被第三方截取数据的风险,更甚至当你以自己的用户名和密码登录该网站的时候,这些信息也有可能被窃取。于是为了规避这种风险,人们提出了ssh。
SSH(Secure Shell): 一种网络安全协议,让信息以加密的形式进行传输。具体体现为ssh通信依赖公钥和私钥这两把钥匙来加密和解析数据。
无论是公钥还是私钥都由本地计算机生成,然后本地计算机会把公钥发给目标服务器。目标服务器所发送的信息都会用公钥进行加密,当收到信息之后,本地计算机再用私钥进行数据解析。由于公钥加密的信息只能用私钥进行解析,而私钥一直存在于本地PC之中,所以不可能被第三方通过网络窃取。通过这种设置,即便第三方通信数据,也因为只有一把钥匙而无法解析。
以上只是一些关于SSH的粗略理解,事实上公钥私钥只用于SSH握手过程的相互确认身份,具体的信息传递还是其他一些加密方法。

在本地生成公钥和私钥

进入git bash
第一步,切换到根目录且进入.ssh文件夹。

cd ~
cd .ssh

第二步,生成密钥。

sshtest-keygen -t rsa -b 4096

第三步,输入密钥的名称(例如test)。
第四步,输入密码。
在这里插入图片描述
通过这个这两部操作,会生成test和test.pub两个文件,前者是私钥文件,后者是公钥文件。
第五步,创建config文件,指定使用该密钥文件来认证GitHub。

tial -5 config

最后一步,进入test.pub文件,复制公钥添加在GitHub中。

在GitHub中添加公钥

通过上一个步骤,我们获取了本地计算机生成的公钥。接下来进入GitHub添加公钥。
如图,先进入GitHub页面,点击自己的头像,再点击Settings…
在这里插入图片描述
在这里插入图片描述
通过以上的操作,接下来我们用本地计算机访问GitHub的时候,GitHub便知道是哪台计算机访问它了,以便接下来我们将GitHub的远程仓库和本地仓库连接起来。

4、远程仓库(GitHub)相关操作

下载GitHub上的代码(git clone)

下载GitHub上的代码可以通过命令行的方式,也可以通过网页点击的方式。网页点击则相对简单,如图,直接点击Download ZIP即可以下载相应的压缩包。
在这里插入图片描述
命令行的方式则有三种,HTTPS, SSH, GitHub CLI。这三种方式只是复制对应的链接,然后在git bash输入命令行即可。

git clone <link>

在我们克隆(clone)别人的仓库之后,也可以用git log去查看作者的修改记录。

下载被更新代码(git pull)

如果我们想获取代码作者在GitHub上作的修改,最笨的方法当然是重新下载一遍,但也可以用git pull命令更新所修改的内容。但需要注意的是,使用git pull命令必须先进入相应的文件夹。

git pull

上传修改的代码(git push)

我们在本地修改代码并添加到本地仓库之后可以用git push命令来将代码上传到GitHub上。但这不意味着你可以随随便便的将自己的代码push到别人的仓库中,一般而言需要得到作者的许可。而对于自己的仓库,GitHub会通过用户名或ssh的密钥来自动匹配你的权限。

git push

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

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

相关文章

【精选】OpenCV多视角摄像头融合的目标检测系统:全面部署指南&源代码

1.研究背景与意义 随着计算机视觉和图像处理技术的快速发展&#xff0c;人们对于多摄像头拼接行人检测系统的需求日益增加。这种系统可以利用多个摄像头的视角&#xff0c;实时监测和跟踪行人的活动&#xff0c;为公共安全、交通管理、视频监控等领域提供重要的支持和帮助。 …

Linux程序之可变参数选项那些事!

一、linux应用程序如何接收参数&#xff1f; 1. argc、argv Linux应用程序执行时&#xff0c;我们往往通过命令行带入参数给程序&#xff0c;比如 ls /dev/ -l 其中参数 /dev/ 、-l都是作为参数传递给命令 ls 应用程序又是如何接收这些参数的&#xff1f; 通常应用程序都…

C++之常用的排序算法

C之常用的排序算法 sort #include<iostream> using namespace std; #include<vector> #include<algorithm> #include<functional> void Myptint(int val) {cout << val << " "; }void test() {vector<int> v;v.push_back(…

一文搞懂什么是 GNU/Linux 操作系统

Author&#xff1a;rab 目录 前言一、UNIX二、Linux三、GNU 前言 你是否经常看见或听说过这么一句话&#xff1a;这是一个类 Unix 的 GNU/Linux 操作系统&#xff0c;你是怎么理解这句话的呢&#xff1f;想要搞懂这句话的含义&#xff0c;你需要了解以下三点基本常识。 一、U…

安装向量数据库milvus及其Attu

前置条件安装docker compose 在宿主机上创建文件目录 mkdir -p /home/sunyuhua/milvus/db mkdir -p /home/sunyuhua/milvus/conf mkdir -p /home/sunyuhua/milvus/etcd下载docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-s…

ChatGPT暂时停止开通plus,可能迎来封号高峰期

前言: 前两日,chat gpt的创始人 San Altman在网上发表了,由于注册的使用量超过了他们的承受能力,为了确保每个人的良好使用体验,chat gpt将暂时停止开通gpt plus。 情况: 前段时间好像出现了官网崩溃的情况,就连api key都受到了影响,所以现在就开始了暂时停止plus的注…

源码安装Apache

一、下载Apache,源码安装Apache #下载 [rootlocalhost opt]# wget -c https://mirrors.aliyun.com/apache/httpd/httpd-2.4.58.tar.gz [rootlocalhost opt]# ls httpd-2.4.58.tar.gz [rootlocalhost opt]# tar -xf httpd-2.4.58.tar.gz [rootlocalhost opt]# ls httpd-2.4.58…

MATLAB | 官方举办的动图绘制大赛 | 第二周赛情回顾

今天带来一下MATHWORKS官方举办的迷你黑客大赛第三期(MATLAB Flipbook Mini Hack)的最新进展&#xff01;&#xff01;目前比赛已经进行了两周非常荣幸能够成为第一周的阶段性获奖者&#xff1a; 本来并不打算每周进行一次赛况讲解&#xff0c;但是由于字符限制改成了2000&…

px4+vio实现无人机室内定位

文章主要讲述px4 如何利用vins_fusion里程计数据实现在室内定位功能。 文章基于以下软、硬件展开。 硬件软件机载电脑&#xff1a; Intel NUC系统&#xff1a;Ubuntu 20.04相机&#xff1a; Intel Realsense D435iros&#xff1a;noetic飞控&#xff1a;Pixhawk 2.4.8固件&am…

HarmonyOS ArkTS 基础组件的使用(四)

1 组件介绍 组件&#xff08;Component&#xff09;是界面搭建与显示的最小单位&#xff0c;HarmonyOS ArkUI声明式开发范式为开发者提供了丰富多样的UI组件&#xff0c;我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。 组件根据功能可以分为以下五大类&#xff1a;…

浅谈Python装饰器原理与用法分析

前言 本文实例讲述了Python装饰器原理与用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 1、装饰器的本质是函数&#xff0c;主要用来装饰其他函数&#xff0c;也就是为其他函数添加附加功能 2、装饰器的原则: (1) 装饰器不能修改被装饰的函数的源代码 (2) 装…

PyTorch微调终极指南1:预训练模型调整

如今&#xff0c;在训练深度学习模型时&#xff0c;通过根据自己的数据微调预训练模型来进行迁移学习&#xff08;transfer learning&#xff09;已成为首选方法。 通过微调这些模型&#xff0c;我们可以利用他们的专业知识并使它们适应我们的特定任务&#xff0c;从而节省宝贵…

【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组

文章目录 一. 遍历整个列表1. 在for循环中执行更多操作2. 在for循环结束后执行一些操作 二. 避免缩进错误三. 创建数值列表1. 使用函数range()2. 使用range()创建数字列表3. 指定步长。4. 对数字列表执行简单的统计计算5. 列表解析 五. 使用列表的一部分-切片1. 切片2. 遍历切片…

10、信息打点——APP小程序篇抓包封包XP框架反编译资产提取

APP信息搜集思路 外在——抓包封包——资产安全测试 抓包&#xff08;Fiddle&茶杯&burp&#xff09;封包&#xff08;封包监听工具&#xff09;&#xff0c;提取资源信息 资产收集——资源提取——ICO、MAD、hash——FOFA等网络测绘进行资产搜集 外在——功能逻辑 内在…

【原创】为MybatisPlus增加一个逻辑删除插件,让XML中的SQL也能自动增加逻辑删除功能

前言 看到这个标题有人就要说了&#xff0c;D哥啊&#xff0c;MybatisPlus不是本来就有逻辑删除的配置吗&#xff0c;比如TableLogic注解&#xff0c;配置文件里也能添加如下配置设置逻辑删除。 mybatis-plus:mapper-locations: classpath*:mapper/*.xmlconfiguration:mapUnd…

【Linux】-进程间通信-共享内存(SystemV),详解接口函数以及原理(使用管道处理同步互斥机制)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

Vue3+Vite实现工程化,插值表达式和v-text以及v-html

1、插值表达式 插值表达式最基本的数据绑定形式是文本插值&#xff0c;它使用的是"Mustache"语法&#xff0c;即 双大括号{{}} 插值表达式是将数据 渲染 到元素的指定位置的手段之一插值表达式 不绝对依赖标签&#xff0c;其位置相对自由插值表达式中支持javascript的…

XmlElement注解在Java的数组属性上,以产生多个相同的XML元素

例如&#xff0c;下面这段XML数据&#xff0c;有多个data元素&#xff0c;并且它们级别相同: <?xml version"1.0" encoding"UTF-8"?><request><reqtype>05</reqtype><secret>test</secret><body><userid&…

93.STL-系统内置仿函数

目录 算术仿函数 关系仿函数 逻辑仿函数 C 标准库中提供了一些内置的函数对象&#xff0c;也称为仿函数&#xff0c;它们通常位于 <functional> 头文件中。以下是一些常见的系统内置仿函数&#xff1a; 算术仿函数 功能描述&#xff1a; 实现四则运算其中negate是一元…

个人博客项目 - 测试报告

文章目录 一、项目背景二、测试报告功能测试1.编写测试用例2.登录测试3.编写文章测试4.查看文章测试5.删除文章测试7.注销登录测试 自动化测试性能测试1.VUG2.进行场景设计3.生成性能测试报告 总结 本文开始 一、项目背景 通过学习测试相关的知识&#xff0c;动手实践并测试一…