git常用命令(git github ssh)

news2025/1/18 19:12:03

目录

  • 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.coloradmin.cn/o/1239231.html

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

相关文章

Linux系统管理与服务器安全:构建稳健云数据中心

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今数字化时代&#xff0c;云数据中心已经成…

Program Header Table(转载)

程序头表与段表相互独立&#xff0c;由ELF文件头统一管理。 程序头表负责ELF文件从文件到加载后映像的映射关系&#xff0c;一般只有可执行文件包含。 1. segment和section segment: 程序头表项描述的对象称为segment&#xff0c;即elf文件加载后的数据块&#xff1b; 它提供…

【计算方法与科学建模】矩阵特征值与特征向量的计算(二):Jacobi 过关法及其Python实现(Jacobi 旋转法的改进)

文章目录 一、Jacobi 旋转法1. 基本思想2. 注意事项 二、Jacobi 过关法1. 基本思想2. 注意事项 三、Python实现迭代过程&#xff08;调试&#xff09; 矩阵的特征值&#xff08;eigenvalue&#xff09;和特征向量&#xff08;eigenvector&#xff09;在很多应用中都具有重要的数…

2023.11.22 homework

七年级数学 五年级数学 也不知道可以教到几年级&#xff0c;估计很快就教不动了。人生啊。

地图导航测试用例,你get了吗?

地图导航是我们经常使用的工具&#xff0c;能帮助我们指引前进的方向。 接下来&#xff0c;会从功能测试、UI测试、兼容测试、安全测试、网络测试、性能测试、易用性测试、文档和国际化语言测试8个方面来编写地图导航测试用例。 一 功能测试 输入起点和终点&#xff0c;验证…

五大资源之Service(可以固定IP)

Service可以看作是一组同类Pod对外访问接口,借助Service应用可以方便的实现服务发现与负载均衡 创建集群内部可以访问Service #暴露Service(也创建在了namespace dev下) [root@master ~]# kubectl expose deployment(pod控制器) nginx --name=svc-nginx1 --type=Cluste…

实在智能携“TARS大模型”入选“2023中国数据智能产业AI大模型先锋企业”

近日&#xff0c;由数据猿与上海大数据联盟联合主办的“2023企业数智化转型升级发展论坛”在上海圆满收官。 论坛颁奖典礼上&#xff0c;《2023中国数据智能产业AI大模型先锋企业》等六大榜单正式揭晓&#xff0c;旨在表彰在AI领域为数智化升级取得卓越成就和突出贡献的企业&am…

最新PHP熊猫头图片表情斗图生成源码

这是一款能生成熊猫头表情斗图的自适应系统源码&#xff0c;无论是在电脑还是手机上都可以正常使用&#xff01;这个源码集成了搜狗搜索图片接口&#xff0c;可以轻松地一键搜索数百万张图片&#xff0c;并且还包含了表情制作等功能模块。对于一些新站来说&#xff0c;这是一个…

代码规范之-理解ESLint、Prettier、EditorConfig

前言 团队多人协同开发项目&#xff0c;困扰团队管理的一个很大的问题就是&#xff1a;无可避免地会出现每个开发者编码习惯不同、代码风格迥异&#xff0c;为了代码高可用、可维护性&#xff0c;需要从项目管理上尽量统一和规范代码。理想的方式需要在项目工程化方面&#xff…

元素清空操作clear与选择操作check

元素清空操作clear与选择操作check clear() 作用 清空输入框的所有内容.clear() 等价于 .type("{selectall}{backspace}") 语法 .clear() .clear(options)option选项 元素选中操作check与uncheck check 语法 // 所有匹配到的选择框都会被选中一遍 .check()/…

【HarmonyOS】元服务卡片本地启动拉起加桌没问题,上架后拉起加桌时卡片展示异常

【关键字】 加桌选卡展示异常 、 2卡共用一个布局 、 代码混淆 【问题现象】 元服务卡片在本地启动拉起加桌时&#xff0c;多卡的选卡过程显示是没问题的。但是在上架后拉起加桌时&#xff0c;多卡的选卡过程卡片展示异常。 代码逻辑是通过创建卡片的时候判断卡片的尺寸大小…

Web前端—移动Web第四天(vw适配方案、vw和vh的基本使用、综合案例-酷我音乐)

版本说明 当前版本号[20231122]。 版本修改说明20231122初版 目录 文章目录 版本说明目录移动 Web 第四天01-vw适配方案vw和vh基本使用vw布局vh布局混用问题 02-综合案例-酷我音乐准备工作头部布局头部内容搜索区域banner 区域标题公共样式排行榜内容推荐歌单布局推荐歌单内…

生活如果真能像队列一样的话

生活如果真能像队列一样&#xff0c;那该多好啊。 —————————————————————————————————————————— 背包&#xff0c;队列 可以先看他们的API&#xff1a;都含有一个无参构造函数&#xff0c;添加单个元素的方法&#xff0c;测试集合…

自动化测试 —— 元素定位

1.什么是自动化测试 自动化测试的概念:软件自动化测试就是通过测试工具或者其他手段&#xff0c;按照测试人员的预定计划对软件产品进行自动化测试&#xff0c;他是软件测试的一个重要组成部分&#xff0c;能够完成许多手工测试无法完成或者难以实现的测试工作&#xff0c;正确…

带记忆的超级GPT智能体,能做饭、煮咖啡、整理家务!

随着AI技术的快速迭代&#xff0c;Alexa、Siri、小度、天猫精灵等语音助手得到了广泛应用。但在自然语言理解和完成复杂任务方面仍然有限。 相比文本的标准格式&#xff0c;语音充满复杂性和多样性&#xff08;例如&#xff0c;地方话&#xff09;,传统方法很难适应不同用户的…

【C++初阶】STL详解(五)List的介绍与使用

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

盖雅绩效应用通过SAP认证并斩获创新方案奖

近日&#xff0c;在「不啻微芒 造炬成阳」为主题的SAP合作伙伴创新大赛上&#xff0c;盖雅工场「G移动绩效创新方案」荣获创新解决方案奖。该方案核心是一款基于SAP SuccessFactors套件及SAP BTP平台的扩展应用&#xff0c;主要针对一线人员绩效管理场景&#xff0c;借助简洁的…

[autojs]autojs开关按钮的简单使用

"ui"; ui.layout(<vertical><Switch id"autoService" text"无障碍服务"checked"false"textSize"15sp"/><button text"第二个按钮"/></vertical> ); ui.autoService.on("check"…

小微初创企业,如何利用媒体宣传快速成长

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 对于小微初创企业来说&#xff0c;利用媒体宣传可以快速提升品牌知名度、扩大影响力&#xff0c;进而促进企业的成长。 1.确定宣传目标&#xff1a;是增加销售、提升品牌知名度、还是推…