git 版本管理工具 学习笔记

news2024/11/28 23:56:42

git 学习笔记

目录

一、git是什么

 二、创建仓库

三、工作区域和文件状态

 四、添加和提交文件

五、回退版本 (了解)

六、查看差异

七、删除文件

 八、.gitignore文件(了解)

 九、github ssh-key配置  

 十、本地仓库和远程仓库内容推送


一、git是什么


git是分布式主流版本管理控制系统
结合GitHub管理托管平台使用
使用一个叫仓库的数据库来控制文件的变化,仓库中的每个文件都有一个完整的版本历史纪录,可以看到提交者在什么时间修改了哪些文件的哪些内容,需要时可以回退历史版本

在这里插入图片描述

 二、创建仓库

方式一:在自己的电脑本地直接创建一个仓库 

 创建一个作为项目仓库的文件夹     mkdir  文件夹名

然后进入该目录下 输入命令 :git init

或者在已有本地项目文件夹直接初始化

git init

出现以上回显语句,说明创建成功,而且,会多一个隐藏文件夹 .git 

ls  看不到隐藏文件夹,要   ls -a  才能看到目录下所有文件夹 

 当然,可以直接初始化一个仓库,直接在命令后加上 仓库名,会直接生成对应文件夹

git init my-repo

方式二:从远程服务器上克隆一个已经存在的仓库

git clone github/gitee项目地址
例如:git clone https://github.com/jjw-DL/OpenPCDet-Noted.git

三、工作区域和文件状态

 工作区:电脑里实际可以看到的目录

暂存区:也叫索引,用来临时存放未提交的内容,一般在.git目录下的index中

本地仓库:Git在本地的版本库,仓库信息存储在.git这个隐藏目录中

远程仓库:托管在远程服务器上的仓库,如github\gitlab\gitee

 文件状态

已修改:修改了文件,但没有保存到暂存区

已暂存:把修改后的文件放到暂存库

已提交:把暂存区的文件提交到本地仓库

主要是以上三种,下两种较少提

(未跟踪):新建的还没有被git管理起来的文件

(未修改):已经被git管理起来,内容未被修改

下图为部分转换关系

 四、添加和提交文件

git init   //创建仓库
git status   //查看仓库状态
git add   //添加到暂存区
git add *.后缀名  //添加一类文件到暂存区
git add .    //把当前文件夹下所有文件添到暂存区
git commit   //提交
git commit -m "message"  //提交所有暂存区的⽂件到本地仓库
git commit -am "message"  //提交所有已修改的⽂件到本地仓库
git log  //查看提交记录信息
git log --oneline  //查看提交历史,--oneline表示简介模式

ps:
git diff   //查看未暂存的⽂件更新了哪些部分
git diff <commit-id> <commit-id>   //查看两个提交之间的差异

git ls-files  //查看暂存区的文件

例如查看状态:

 这是已经提交完成的状态

刚创建的未跟踪的文件是显示红色的

git add 可以使用通配符添加多个同后缀文件

例:下有四个红色未跟踪状态下的文件,txtsh都有

 把以txt结尾的文件添加进暂存区,使用命令

git add   *.txt

运行命令后查看status状态 ,绿色表示在暂存区,红色表示在工作区未添加到暂存区

git commit只会提交暂存区中的文件,不提交工作区的文件

五、回退版本 (了解)

git reset 

git reset --soft   //工作区和暂存区都不清空
git reset --hard    //工作区清空  暂存区清空  
git reset --mixed    //工作区保留  暂存区清空  --默认此场景

 例如下面三次提交:

下面是  git log 查询的版本号

  复制三份,用来熟悉三种参数操作

 例:尝试soft回退:

 查看提交历史:

 退到第二次提交了

工作区文件还在,内容未变,暂存区文件也还在

查看状态,回到了第二次提交版本,此时 file3 还未提交,仍在暂存区,显示绿色 

hard参数回退到上一版本:工作区暂存区file3都没了

mixed参数回退到上一版本:工作区还有,暂存区没了

六、查看差异

七、删除文件

rm <file> ;git add <file> //本地工作区删除文件,然后暂存删

git rm <file>   //从暂存区和工作区同时删除

git rm --cached <file>   //暂存区删除,保留在工作区中

git rm -r *   //递归删除某个目录下所有子目录和文件,删后提交下

ps:
git mv <file> <new-file>  //移动⼀个⽂件到新的位置

 关于rm 后要add, 看到,单纯rm后,暂存区并没删除,所以有git rm  file这个命令,一次就好,

 但还是记得 git commit 提交,不然,删除的文件在版本库中还是存在的

 八、.gitignore文件(了解)

作用是让我们忽略掉一些不应该被加入到版本库中的文件,让仓库体积更小,更干净

 九、github ssh-key配置  

github建立仓库后,有https 和 ssh 两种方式的远程仓库地址,

https开头的方式在我们需要把本地代码push到远程仓库的时候,要验证账户和密码

git 开头的使用ssh协议,这种方式在推送的时候不需要验证用户名和密码,但需要在github上添加ssh公钥的配置,更安全

github 配置ssh密钥:

直接git clone 在github上的地址,发现报无法建立连接

键入:

ssh-keygen

回显密钥文件生成位置,直接回车,跳出设置二次验证密码,没必要,直接回车,再回车确认空填二次验证密码 ,如下图,成功

 记事本打开公钥.pub 文件,全选内容,复制

 打开github页面,头像处点击,进入settings,

 左侧栏找到ssh and gpg keys ,进入,点击add keys

 如图,可以取一个名字

可能会跳出验证github的账号密码,输入就行

可以测试一下连接,输入如下命令

ssh -T git@github.com

 测试通过

 总结:

 十、本地仓库和远程仓库内容推送

再次克隆我们创建的github仓库,克隆成功

复习一下添加命令,以及推送到平台

进入仓库,创建个小文件,写入 hello

 git add 添加到暂存区,git commit 添加到本地仓库

 此时,github还是看不到我们的hello.txt

因为没有从本地仓库推送到远程平台仓库

所以,执行 git push 命令

 此时,刷新 github 仓库页面,发现已经推送成功

十、关联本地仓库和远程仓库

git remote add origin ....github仓库地址....
----------------------------
git branch -M mian   //指定分支名称为main
----------------------------
git push -u origin main  
//把本地的main分支和远程的origin别名的仓库的main分支关联起来
//其实,完整语句应该是:
//git push -u origin main:main
//如果本地分支和远程分支名字相同的话,就写一个main就行啦

----------------------------
git pull origin main
//远程仓库上在线修改了文件的话,或者其他人的本地仓修改了推上去,
//而我们在本地仓库要同步的话,需要拉取同步,这时要使用pull
//作用是把远程仓库的指定分支拉取到本地进行合并

以刚才例子做说明步骤

 可以看到现在远程仓库对应别名就是 origin ,后面就是对应地址

 push 具体例子上一节有

示范一下 pull 操作

github上在线新增一个 readme 文件

 不输入别名 分支名 ,则默认仓库别名为origin,分支为main

 本地仓库新增了修改的新增readme文件

 查看内容,一致

 注意,执行完pull,会自动执行合并操作,如果远程仓库修改内容和本地仓的修改内容没有冲突的话,合并操作就会成功,否则会冲突失败,需要手动解决

fetch 命令也可以获取远程仓的修改,但不会自动合并,具体冲突问题在学习分支时再记录

小节总结:

 2023.8.7

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

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

相关文章

Shell - 备份mysql的N种姿势

文章目录 mysqldump --help备份mysql的N种姿势 mysqldump --help mysqldump 是一个常用的命令行工具&#xff0c;用于备份和还原 MySQL 数据库。 [rootVM-24-3-centos blg]# mysqldump --help mysqldump Ver 10.13 Distrib 5.6.50, for Linux (x86_64) Copyright (c) 2000,…

node爬取中国行政区域geo数据

依赖 {"dependencies": {"axios": "^1.4.0","colors": "^1.4.0","express": "^4.18.2","fs": "^0.0.1-security"} }数据来源 https://datav.aliyun.com/portal/school/atlas/are…

数据可视化(八)堆叠图,双y轴,热力图

1.双y轴绘制 #双Y轴可视化数据分析图表 #add_subplot() dfpd.read_excel(mrbook.xlsx) x[i for i in range(1,7)] y1df[销量] y2df[rate] #用来正常显示负号 plt.rcParams[axes.unicode_minus]False figplt.figure() ax1fig.add_subplot(1,1,1)#一行一列&#xff0c;第一个区域…

《Zookeeper》从零开始学Zookeeper源码(二)之数据序列化与通信协议

目录 序列化与反序列化通信协议请求头的数据结构响应头的数据结构 序列化与反序列化 zookeeper的客户端与服务端、服务端与服务端之间会进行一系列的网络通信&#xff0c;在进行数据的传输过程中就涉及到序列化与反序列化&#xff0c;zookeeper使用Jute作为它的序列化组件&…

FreeRTOS的线程间通信

一、分类 FreeRTOS的线程间通信分为这几大类 由于我还在学习中&#xff0c;目前显从信号开始记录学习 二、逐块讲解 1、信号&#xff08;osSignalWait osSignalSet&#xff09; FreeRTOS从V8.2.0版本开始提供任务通知这个功能&#xff0c;每个任务多有一个32位的通知值&am…

OLAP ModelKit Crack,ADO.NET和IList

OLAP ModelKit Crack,ADO.NET和IList OLAP ModelKit是一个多功能的.NET OLAP组件&#xff0c;用C#编写&#xff0c;只包含100%托管代码。它具有XP主题的外观&#xff0c;并能够使用任何.NET数据源(ADO.NET和IList)。借助任何第三方组件(尤其是图表组件)呈现数据的能力扩展了产品…

flink kafka消费者如何处理kafka主题的rebalance

背景&#xff1a; 我们日常使用kafka客户端消费kafka主题的消息时&#xff0c;当消费者退出/加入消费者组&#xff0c;kafka主题分区数有变等事件发生时&#xff0c;都会导致rebalance的发生&#xff0c;此时一般情况下&#xff0c;如果我们不自己处理offset&#xff0c;我们不…

那些被忽视的Python核心功能...

最实用、最简单、最优美……近些年&#xff0c;大家学习Python的热潮从未消退&#xff1b;无论是数据分析还是科学计算都少不了Python的身影。 Python也没有让人失望&#xff0c;Java用100行代码写出的程序&#xff0c;用Python十行就能搞定&#xff01; 当你要说Hello World…

银河麒麟QT连接DM8数据库

1. 安装达梦8 官网下载, 按照官方文档进行安装即可. 2. 安装unixodbc 1> 下载odbc安装包 unixODBC-2.3.7pre.tar.gz 2> 解压 tar -xvf unixODBC-2.3.7pre.tar.gz3> 编译 ./configure -prefix /usr/local make && make install4> 查找配置 odbcinst -j5…

Redis集群部署(docker-compose)

更多更新信息请关注“技术客格”公众号 使用3主+3从的部署方式 一、服务器规划 序号 服务器 端口 节点名称 备注 1 192.168.1.120 6179 redis-1 2 192.168.1.1206279 redis-2 3 192.168.1.1206379 redis-3 4 192.168.1.1206479 redis-4 5 192.168.1.1206579 redis-5 6 192.…

多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法

一、&#x1f49b; Java的Thread类表示线程 1.创建类&#xff0c;继承Thread重写run方法 2.创建类&#xff0c;实现Runnable重写run方法 3.可以继承Thread重写run基于匿名内部类 4.实现Runnable重写run基于匿名内部类 5.lamdba表达式表示run方法的内容&#xff08;推荐&#x…

一、安全世界观

文章目录 1、 Web安全简史1.1 中国黑客简史1.2 黑客技术的发展历程1.3 web安全的兴起 2、黑帽子、白帽子3、安全的本质4、安全三要素5、如何实施安全评估5.1 资产等级划分5.2 威胁分析5.3 风险分析5.4 设计安全方案 6、白帽子兵法6.1 Secure By Default6.2 纵深防御原则6.3 数据…

在Raspberry Pi 4上安装Ubuntu 20.04 + ROS noetic(不带显示器)

在Raspberry Pi 4上安装Ubuntu 20.04 ROS noetic&#xff08;不带显示器&#xff09; 1. 所需设备 所需设备&#xff1a; 树莓派 4 B 型 wifi microSD 卡&#xff1a;最小 32GB MicroSD 转 SD 适配器 &#xff08;可选&#xff09;显示器&#xff0c;鼠标等 2. 树莓派…

积累常见的有针对性的python面试题---python面试题001

1.考点列表的.remove方法的参数是传入的对应的元素的值,而不是下标 然后再看remove这里,注意这个是,删除写的那个值,比如这里写3,就是删除3, 而不是下标. remove不是下标删除,而是内容删除. 2.元组操作,元组不支持修改,某个下标的内容 可以问他如何修改元组的某个元素 3.…

Git Submodule 更新子库失败 fatal: Unable to fetch in submodule path

编辑本地目录 .git/config 文件 在 [submodule “Assets/CommonModule”] 项下 加入 fetch refs/heads/:refs/remotes/origin/

sigmoid ReLU 等激活函数总结

sigmoid ReLU sigoid和ReLU对比 1.sigmoid有梯度消失问题&#xff1a;当sigmoid的输出非常接近0或者1时&#xff0c;区域的梯度几乎为0&#xff0c;而ReLU在正区间的梯度总为1。如果Sigmoid没有正确初始化&#xff0c;它可能在正区间得到几乎为0的梯度。使模型无法有效训练。 …

如何让子组件,router-view,呈现左右分布格局

1.用浮动进行浮动布局&#xff0c;定义一个大盒子&#xff0c;把浮动的样式写在公共样式里&#xff08;这里在main.js里定义一下全局布局&#xff09;。 2、能够在右边显示了

小研究 - MySQL 分区分表的设计及实(一)

随着信息技术的快速发展&#xff0c;数据量越来越大&#xff0c;海量的表查询操作需要消耗大量的时间&#xff0c;成为影响数据库访问性能提高的主要因素。为了提升数据库操作的查询效率和用户体验&#xff0c;在关系型数据库管理系统(MySQL)中通过 range 分区和 Merge 存储&am…

因果推断(三)双重差分法(DID)

因果推断&#xff08;三&#xff09;双重差分法&#xff08;DID&#xff09; 双重差分法是很简单的群体效应估计方法&#xff0c;只需要将样本数据随机分成两组&#xff0c;对其中一组进行干预。在一定程度上减轻了选择偏差带来的影响。 因果效应计算&#xff1a;对照组y在干预…

【kafka消息查询】kafka消费不到数据,写入端伙伴说他写入了,而且没有报错,如何来切割是写入的问题还是消费的问题

文章目录 前言情景再现如何确定是否写入了为什么出现不能写入总结 前言 kafka消费不到消息&#xff0c;如何查询界定是生产端的问题还是消费端的问题&#xff0c;特别是场景上下文已经丢失了的时候。 情景再现 使用命令&#xff1a; bin/kafka-console-consumer.sh --bootstr…