Git 版本控制系统 笔记

概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码

作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容【团队开发同一个项目的代码版本管理】

  • 1、Git 安装

之前写了,安装、配置、错误集都有:【这个是配合项目做的,可能更好理解】

Git 安装、配置并把项目托管到码云 Gitee_打不着的大喇叭的博客-CSDN博客

1)检验成功: 打开 bash 终端(git 专用)

这里 桌面鼠标右键 选择git bash 也可以,下面那个图是 vscode里面打开的

2)命令:git -v(查看版本号) 

3、Git 配置用户信息 

配置:用户名和邮箱,应用在每次提交代码版本时表明自己身份 

    git config --global user.name "码云的用户名"git config --global user.email "码云绑定的邮箱"


  • 2、掌握 Git 仓库

1、Git 仓库(repository):记录文件状态内容的地方,存储着修改的历史记录

        1)创建: 把本地文件夹转换成 Git 仓库:命令 git init  【在你项目中】

        2)从其他服务器上克隆 Git 仓库

2、需求:创建一个空白的 Git 仓库


  • 3、Git 的三个区域

  • 工作区:我们平常项目开发的文件夹【每写一部分,都可以说是一个进度】
  • 暂存区: 保存之前的储备区【在进行项目下一个内容前,可放进这暂存,项目更改,我们可以放进来替换上一个内容,继续暂存】
  • 版本库:提交 暂存区 真正已经准备好的内容,产生一个版本【可以在更改原项目后,回来看之前的保存在这的项目内容】

在开发时,你会把 需要的 项目文件添加到 已经 git init 的 文件夹中,把这个项目提交到 git 仓库,但是你在 提交到 暂存区时,发现 代码有点问题,花了两秒 改了一下,这时,不需要产生版本快照,你只要继续 git add . ,就会在暂存区替换之前暂存的内容,你再 提交到 版本库


  • 4、Git 文件状态

1、Git 文件 2 种状态:

        1)未跟踪:新文件,从未被 Git 管理过

        2)已跟踪:Git 已经知道和管理的文件

2、通过命令 git status 可查看当前文件状态【后面添加 -s 输出会更加简便些】

查看当前文件状态【后面添加 -s 输出会更加简便些】:git status

第一列是暂存区状态,第二列是工作区状态 

下面的两个 MM 意思:暂存区和工作区都已修改


  • 5、Git 暂存区使用

  • 暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦
  • 暂存区 -> 覆盖 -> 工作区,命令:git restore 目标文件(注意:完全确认覆盖时使用)
  • 从暂存区移除文件,命令:git rm --cached 目标文件

1、查看暂存区的文件:

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

2、恢复成暂存区的文件内容:

恢复成暂存区的文件内容 :git restore 目标文件在根目录下路径

3、移除暂存区中的某个文件 

移除暂存区中的某个文件 :git rm --cached 目标文件在根目录下路径


  • 6、Git 回退版本

概念:把版本库某个版本对应的内容快照,恢复到工作区/暂存区

  • 注意1:只有记录在版本库的提交记录才能恢复
  • 注意2:回退后,继续修改->暂存->提交操作即可(产生新的提交记录过程)
  • 注意3:回退后,版本库各个版本还在,没有被删除

查看之前提交版本库的历史:git log --oneline

1、查看之前提交版本库的历史 :【回退的版本,不会出现在这里】git log --oneline2、查看完整的日志 :git reflog --oneline回车输出:[版本号] [提交的信息]
例子如图:a219584 1.登录页面-标签部分准备

假设: 我们 提交到 版本库 三次,我们需要回退到第一次提交时【第一次 index.html】

  • 第一次:提交 html 页面【版本库:index.html】
  • 第二次:提交 css 样式【版本库:index.html、index.css】
  • 第三次:提交 js 文件【版本库:index.html、index.css、index.js】

现在情况:工作区和暂存区【index.html、index.css、index.js,可能你修改了工作区的文件,并提交到了 暂存区 ,但是没有提交到 版本库

1)git reset --soft 版本号(其他文件未跟踪)【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,原本的【index.css、index.js】没有变

现在情况:工作区和暂存区【index.html(第一次提交的版本)、index.css、index.js】 

2)git reset --hard 版本号【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,原本的【index.css、index.js】会被删除

现在情况:工作区和暂存区【index.html(第一次提交的版本)

如果第一次提交版本不满意,要恢复第三次的版本【查看完整的日志 :git reflog --oneline】查看第三次版本的版本号,然后 【git reset --hard 第三次提交的版本号】

3)git reset --mixed 版本号 (与 git reset 等价)【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,工作区的【index.css、index.js】没有变,不过暂存区只有【index.html(第一次提交的版本)

现在情况:工作区和暂存区【index.html(第一次提交的版本)、index.css、index.js】

1、 git reset --soft 版本号2、 git reset --hard 版本号3、 git reset --mixed 版本号

4git reset --soft/hard/mixed 版本号  总结

 


  • 7、Git 忽略不需要的文件

无论文件写在 根目录下 哪里,都会被找到忽略 ,并且文件名变暗


  • 8、Git 分支

概念:本质上是指向提交节点的可变指针,默认名字是 master

注意:HEAD 指针影响工作区/暂存区的代码状态

提示:如下图,我们创建 content分支 开发别的业务,但是我们还想修bug,不影响 content分支 ,这时,我们切换回到 master分支,再创建 login-bug分支 来修bug,这样互不影响了

1、创建分支命令:git branch 分支名2、切换分支命令:git checkout 分支名3、查看所有分支git branch

步骤:


  • 9、分支-合并与删除

1、切回到要合入的分支上:git checkout master2、合并其他分支过来:git merge login-bug3、删除合并后的分支指针:git branch -d login-bug


  • 10、分支-合并冲突

概念:不同分支中,对同一个文件的同一部分修改,Git 无法干净的合并,产生合并冲突

假设:

1、基于 master 新建 publish 分支,修改内容页面的 html 文件的 title 标签,并提交一次

2、切换到 master,也在修改内容页面的 html 文件的 title 标签,并提交一次

解决冲突后,进行提交: 

 


  • 11、Git 远程仓库 

概念:托管在因特网或其他网络中的你的项目的版本库

作用:保存版本库的历史记录,多人协作

创建:公司自己服务器 / 第三方托管平台(Gitee,GitLab,GitHub...)

1、注册第三方托管平台网站账号

地址:工作台 - Gitee.com

2、新建仓库得到远程仓库 Git 地址

3、本地 Git 仓库添加远程仓库原点地址

1、本地 Git 仓库添加远程仓库原点地址
命令: git remote add 远程仓库别名 远程仓库地址
例如: git remote add origin https://gitee.com/xxx/work.git2、本地 Git 仓库推送版本记录到远程仓库
命令: git push -u 远程仓库别名 本地和远程分支名
例如: git push -u origin master
完整写法:git push --set-upstream origin master:master


  • 12、Git 远程仓库-克隆 

  • 克隆:拷贝一个 Git 仓库到本地,进行使用
  • 命令:git clone 远程仓库地址,例如:git clone https://gitee.com/xxx/work.git
  • 效果:在运行命令所在文件夹,生成 work 项目文件夹(包含版本库,并映射到暂存区和工作区)
  • 注意1:Git 本地仓库已经建立好和远程仓库的链接
  • 注意2:仓库公开随意克隆,推送需要身为仓库团队成员 


  • 13、Git 多人协同开发

需求:小传新代码共享给小智

步骤:

小传开发代码 -> 工作区 -> 暂存区 -> 提交 -> 拉取(可选)-> 推送

小智 -> 拉取(后续也可以开发代码 -> ... -> 推送)

想要看到别人同步上去的最新内容:git pull origin master 等价于下面两条命令相加:git fetch origin master:master(获取远程分支记录到本地,未合并)git merge origin/master (把远程分支记录合并到所在分支下)

  • 14、VSCode 中使用 Git

使用:源代码管理,进行暂存,撤销,对比差异,提交等操作 


  • 15、Git 常用命令 

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

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

相关文章

Spring系列文章:Spring事务

一、事务简述 1、什么是事务( Transaction(tx)) 在⼀个业务流程当中,通常需要多条DML(insert delete update)语句共同联合才能完成,这 多条DML语句必须同时成功,或者同…

C++(day4)

思维导图 封装Mystring #include <iostream> #include<cstring>using namespace std;class Mystring{ public://无参构造函数Mystring():size(10){strnew char[size];strcpy(str,"");cout<<"无参构造函数"<<endl;}//有参构造函数…

怎么压缩pdf文件大小?详细压缩步骤

怎么压缩pdf文件大小&#xff1f;在日常的工作和学习中&#xff0c;我们频繁地处理PDF文件。然而&#xff0c;有时候这些文件的大小可能会非常庞大&#xff0c;这给我们带来了一系列的问题。首先&#xff0c;它们占用了大量的存储空间&#xff0c;使得我们的设备变得拥挤不堪。…

大话数据结构 1 绪论

数据:是描述客观事物的符号&#xff0c;是计算机中可以操作的对象&#xff0c;是能被计算机识别&#xff0c;并输入给计算机处理的符号集合。 数据元素:是组成数据的&#xff0c;有一定意义的基本单位&#xff0c;在计算机中通常作为整体处理&#xff0c;也被称为记录。 数据项…

使用SSH地址拉取远程仓库代码报下面的错误

说明&#xff1a;配置了SSH秘钥后&#xff0c;使用SSH地址克隆代码&#xff0c;依旧无法拉取代码&#xff0c;提示下面这个信息。 Their offer&#xff1a;ssh-rsa&#xff0c;ssh-dss fatal&#xff1a;Could not read from remote repository. Please make sure you have the…

bug总结问题集和知识点集(一)

目录 一 bug问题集1. 端口被占用 二 oracle1. oracle查看版本怎么操作2. oracle数据库&#xff1a;参数个数无效![在这里插入图片描述](https://img-blog.csdnimg.cn/6a2eebc164f9406c81525371893bbd11.png)3. ORACLE数据库如何完整卸载? 三 mybatis1. mybatis用注解如何实现模…

Zabbix监控组件及流程

Zabbix 由5大组件构成 Zabbix Web、Zabbix Server、Zabbix Proxy、Zabbix Database、Zabbix Agent Zabbix监控系统具体监控系统流程如图&#xff1a; Zabbix Web Zabbix Web是基于PHP语言编写的WEB UI界面&#xff0c;展示Zabbix整个监控平台监控数据、配置信息、方便对整个…

揭秘弹幕游戏制作

最近好多人问弹幕游戏&#xff0c;甚至是招人的也要DOTS做弹幕游戏... 实际上目前的弹幕游戏绝大多数应该和DOTS没有半点关系&#xff0c;别忘了DOTS这项技术渲染问题还没能够被合理解决呢 所以目前用的全都是GPU Instance这项技术&#xff0c;于是乎我决定下场写这篇帖子&am…

Java并发编程面试题

基础知识 并发编程的优缺点 为什么要使用并发编程&#xff08;并发编程的优点&#xff09; 充分利用多核CPU的计算能力&#xff1a;通过并发编程的形式可以将多核CPU的计算能力发挥到极致&#xff0c;性能得到提升方便进行业务拆分&#xff0c;提升系统并发能力和性能&#…

day15-面向对象进阶(抽象类接口内部类)

今日内容 抽象类接口内部类 教学目标 能够写出抽象类的格式 能够写出抽象方法的格式 能说出抽象类的应用场景 写出定义接口的格式 写出实现接口的格式 说出接口中成员的特点 能说出接口的应用场景 能说出接口中为什么会出现带有方法体的方法 能完成适配器设计模式 第一章 抽…

怎样吃透一个java项目?

前言 对于刚开始看视频敲代码&#xff0c;最忌讳的便是一上来就完全照着视频做&#xff0c;这么做就算完完全全的跟着视频做出来一个项目&#xff0c;始终都无法将里面具体的知识化为己有&#xff0c;单纯来说只是简单的复刻&#xff0c;视频的作者本身是不会对他在做该项目过…

《TCP/IP网络编程》阅读笔记--标准I/O和I/O流分离

目录 1--标准I/O 1-1--标准I/O的优缺点 1-2--FILE 指针和文件描述符的转换 1-3--基于Socket的标准I/O函数使用 2--I/O流分离 2-1--文件描述符的复制和半关闭 2-2--复制文件描述符实现 I/O 流的分离 1--标准I/O 1-1--标准I/O的优缺点 标准 I/O 函数的优点&#xff1a; ①…

SSTables和LSM-Tree

SSTables 可以类比Kafka&#xff1a;将数据按键排序写入磁盘&#xff0c;并分为多个段&#xff0c;组织段的稀疏索引&#xff0c;并定期合并段文件&#xff08;kafka因为不存在重复数据&#xff0c;所以不需要合并&#xff09; LSM-Tree是基于SSTables的&#xff1a;在内存中维…

Linux中防火墙的简单使用方法

目录 前言 ​编辑 一、概念 1、防火墙的分类&#xff1a; 2、防火墙性能 3、硬件防火墙的品牌、软件防火墙的品牌 4、硬件防火墙与软件防火墙比较 二、linux中的防火墙 1、iptables 2.netfilter/iptables功能 3、四表 iptables中表的优先级 4、五链 三、iptables…

国家网络安全周2023时间是什么时候?有什么特点?谁举办的?

国家网络安全周2023时间是什么时候&#xff1f; 2023年国家网络安全宣传周将于9月11日至17日在全国范围内统一开展。其中开幕式等重要活动将在福建省福州市举行。今年网安周期间&#xff0c;除开幕式外&#xff0c;还将举行网络安全博览会、网络安全技术高峰论坛、网络安全微视…

机器学习——boosting之XGBoost(未完)

划水一整天&#xff0c;模型看了仨&#xff01;不错&#xff0c;虽然现在在打哈欠&#xff0c;还是很想把XGBoost梳理梳理 先从名字开始 XGBoost&#xff0c;eXtreme Gradient Boosting: em。。。。不理解 书上说&#xff0c;XGBoost有很好的性能&#xff0c;在各大比赛中大放异…

从头开始制作扩散模型(实现快速扩散模型的简单方法)

一、说明 本文是关于自己从头开始构建扩散模型的教程。我总是喜欢让事情变得简单易行&#xff0c;所以在这里&#xff0c;我们避免了复杂的数学。这不是一个正常的扩散模型。相反&#xff0c;我称之为快速扩散模型。将仅使用卷积神经网络&#xff08;CNN&#xff09;来制作扩散…

API(九)基于协程的并发编程SDK

一 基于协程的并发编程SDK 场景&#xff1a; 收到一个请求会并发发起多个请求,使用openresty提供的协程说明&#xff1a; 这个是高级课程,如果不理解可以先跳过遗留&#xff1a; APSIX和Kong深入理解openresty 标准lua的协程 ① 早期提供的轻量级协程SDK ngx.thread ngx…

数据结构——【堆】

一、堆的相关概念 1.1、堆的概念 1、堆在逻辑上是一颗完全二叉树&#xff08;类似于一颗满二叉树只缺了右下角&#xff09;。 2、堆的实现利用的是数组&#xff0c;我们通常会利用动态数组来存放元素&#xff0c;这样可以快速拓容也不会很浪费空间&#xff0c;我们是将这颗完…

【C++】构造函数调用规则 ( 默认构造函数 | 默认无参构造函数 | 默认拷贝构造函数 | 构造函数调用规则说明 )

文章目录 一、默认构造函数1、默认无参构造函数2、默认拷贝构造函数 二、构造函数调用规则1、构造函数规则说明2、代码示例 - 只定义拷贝构造函数3、代码示例 - 只定义有参构造函数 一、默认构造函数 C 类中 2 种特殊的构造函数 , 分别是 : 默认无参构造函数 : 如果 C 类中 没…