经验总结:(Git 版本控制工具快速入门)

news2024/12/25 9:27:25

Git学习笔记

版本控制(版本迭代)

什么是版本控制

版本迭代,开发过程中,对项目各个阶段的版本的控制。

在开发过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本。

多人开发必须要使用版本控制。

常见的版本控制工具

  • Git (当下最流行)
  • SVN
  • CVS
  • VSS
  • TFS
  • Visual Studio Online

版本控制分类

版本分类

1.本地版本控制

2.集中版本控制

3.分布式版本控制

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人,如RCS。

集中版本控制

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或者上传自己的修改。例如,SVN、CVS、VSS。

不连网,用户看不到历史版本。

分布式版本控制

所有版本信息仓库全部同步到本地的每个用户这样可以在本地查看所有历史版本,可以离线在本地提交,只需在连网时,将信息push到相应的服务器或其他用户那里。

不会因为服务器损坏或者网络问题,造成不能工作的情况。

常用Linux命令

基本的Linux命令

改变目录

#返回上一级目录
cd ..

#切换目录
cd 目录路径+目录名

显示目录

pwd

清屏

clear

列出当前目录下的文件

ls

创建文件

#创建一个index.js
touch index.js

删除文件

rm index.js

新建目录

mkdir 文件目录名字

删除目录

rm -r 文件目录名字

移动文件

mv 目标对象 移动的位置

查看历史命令

history

Git的必要配置

查看配置的命令

#查看Git配置
git config -l

#查看系统配置
git config --system --list

#查看本地的一些配置
git config --global --list

设置邮箱和用户名

邮箱和用户名会被嵌入到所有的提交信息中,便于让别人知道是谁提交的

必须配置

git config --global user.name 你的用户名
git config --global user.email 你的邮箱

配置文件的位置

所有的配置文件都在本地

Git的配置文件在:Git安装目录 --> etc --> gitconfig

Git 的基本理论

Git 四个工作区域

  • WorkSpace 工作区: 平时存代码和文件的地方。
  • Stage 暂存区:用于临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息 (项目中 .git 文件夹),其中index指向最新放入Stage的版本
  • 本地仓库(Local Repository):就是安全存放数据的位置,这里有你提交的所有版本的数据,其中HEAD 指向最新放入仓库的版本
  • 远程仓库(Remote Repository):Github(国外) 、Gitee(国内)

关系如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NPuM8SZC-1683808749414)(../AppData/Roaming/Typora/typora-user-images/image-20230511184633432.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XfOTzs3W-1683808749415)(../AppData/Roaming/Typora/typora-user-images/image-20230511183118344.png)]

上图中的相关解释:

  • Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。

  • WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。

  • .git:存放Git管理信息的目录,初始化仓库的时候自动创建,是一个隐藏的文件夹。

  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。

  • Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。

  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。


注意:

  • 可以说本地仓库=工作目录的文件夹+.git文件夹,这个等式也是成立的。

    在Git中,工作目录是指你正在编辑的实际文件夹,包含你正在进行编辑或修改的所有代码、文本文件、图像或其他项目。当你对工作目录中的文件进行更改时,这些更改并不会立即反映在本地仓库或远程仓库中。

    而本地仓库则是.git文件夹和相关信息的集合,主要用于记录项目的版本历史和状态。.git文件夹包含了项目的所有版本历史记录、元数据和对象等重要信息,并存储在计算机上的特定位置中。

    因此,可以将本地仓库视为工作目录的文件夹和.git文件夹的组合。这两者一起构成了一个完整的本地仓库,用于管理项目的版本控制。

  • Git中的暂存区是指一个中间状态,用于暂时保存你对代码库所做更改的地方。它通常位于本地仓库和工作目录之间。当你修改了文件并准备提交这些修改时,Git会将这些更改先添加到暂存区,然后在执行提交操作时将其保存到本地仓库中。

    具体来说,暂存区是一个文件,也被称为索引(Index),位于.git目录下,是Git用于缓存即将提交的更改的地方。它记录了下一次提交要保存哪些文件、修改了哪些部分、以及每个文件最后一次提交的快照。通过将更改添加到暂存区,你可以控制哪些更改需要提交,哪些不需要提交。

    与本地仓库相比,暂存区主要是位于本地仓库和工作目录之间的一个中间状态,用于缓存即将提交的更改。本地仓库则是包含历史版本的完整数据库,存储在计算机上的特定位置中,用于记录项目的版本历史和状态。工作目录则是指你正在编辑的实际文件夹,包含你正在进行编辑或修改的所有代码、文本文件、图像或其他项目

Git的必要命令

#从工作区添加到暂存区(文件只是暂时保存,还没有永久化)
git add

#从暂存区提交到本地的Git仓库
git commit

#从本地仓库提交到远程仓库
git push

#从远程仓库把代码拉到本地
git pull

#从本地仓库回滚到暂存区
git reset

#从暂存区检出到工作区
git checkout

Git 的工作流程

git的工作流程一般如下:

1.在工作目录中添加、修改文件

2.将需要进行版本管理的文件放入暂存区域(git add)

3.将暂存区的文件提交到git仓库(git commit)

因此git 管理的文件有三种状态:

  • 已修改(modified)、

  • 已暂存(staged)、

  • 已提交(committed)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GD2q2OMu-1683808749416)(../AppData/Roaming/Typora/typora-user-images/image-20230511183820192.png)]

分支(branch)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DqGSPXXW-1683808749417)(../AppData/Roaming/Typora/typora-user-images/image-20230511203853577.png)]

  • 分支就是平行宇宙
  • master: 主分支

分支中常用的命令

#列出所有本地分支
git branch

#列出所有远程分支
git branch -r

#新建一个分支,但是工作目录依然停留在当前分支
git branch [branch-name]

#新建一个分支,并将工作目录切换到新分支
git checkout -b [branch]

#合并指定分支到当前分支
git merge [branch]

#删除分支
git branch -d [branch-name]

#删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
  • 多个分支并行执行,我们代码也不冲突,即同时存在多个版本。
  • 如果合并分支时,同时修改了同一个文件,会引发冲突,需要协商/手动处理。
  • Master分支应该非常稳定,用来发布新版本,一般情况下不允许在上面进行操作。

Git项目搭建

本地仓库搭建

#第一种方法:进入工作项目的根目录,键入git init,会创建一个.git文件夹,注意这个git文件夹是一个隐藏的文件夹
git init

#第二种方法:克隆远程目录,将远程服务器上的仓库完全镜像一份至本地
git clone [url] #去远程仓库上copy下来 http/ssh等链接

Git 文件操作

文件的四种状态

  • Untracked 未跟踪:文件在工作目录中,但是还没有加入git仓库,通过git add命令后变为Staged暂存状态。

  • Unmodify 未修改:文件已经入库,且与项目文件内容一致。若此时被修改,则文件状态变为 已修改,如果使用 git rm 移出仓库,则文件状态变为未跟踪

  • Modified 已修改:文件已经修改。git add --> 暂存状态;git checkout -->覆盖当前文件 --> 未修改。

  • Staged 暂存状态git commit --> 提交到本地仓库;git reset HEAD filename --> 取消暂存;

查看文件状态

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

修改文件状态

#添加所有文件到暂存区
git add .

#提交暂存区的内容到本地仓库
#  -m  提交信息message
git commit -m ""

忽略文件

  • 有时候不需要把所有的文件都纳入版本控制,例如数据库文件、临时文件、设计文件等

  • 主目录下建立 “.gitignore” 文件,该文件有以下规则:

    1.文件中的注释#号开头

    2.可以使用Linux通配符

    3.如果名称最前面有一个感叹号!,表示例外规则,将不被忽略

    4.如果名称的最前面是一个路径分隔符/,表示要忽略的文件在此目录下,而子目录中的文件夹不忽略

    5.如果名称的最后面是一个路径分隔符/,表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)

#为注释
#忽略所有的  .txt  结尾的文件,这样的话上传不会被选中
*.txt       

#但是lib.txt除外(lib.txt不会被忽略)
!lib.txt

#仅忽略项目根目录下的TODO文件,但是不包括目录temp(/在前,忽略前面)
/temp

#忽略build目录下的所有文件(/在后,忽略后面)
build/

#会忽略 doc/notes.txt 但是不包括 doc/server/arch.txt
doc/*.txt

使用Gitee或者Github

使用流程

  • 注册登录码云,完善个人信息

  • 设置本机绑定SSH公钥,实现免密码登录

    #在c盘用户目录下,新建一个.ssh文件夹
    #如:C:\Users\Adminstrator\.ssh
    #在git bash命令窗口键入命令,创建公钥,执行如下命令:
    ssh-keygen -t rsa
    

    此时,一直回车继续,直到.ssh文件夹下出现类似 id_rsa.pub 和 id_rsa 文件

    将.pub文件的内容拷贝到码云或者Github的SSH公钥里面,生成认证信息

  • 使用Gitee或者Github新建一个仓库

    直接在Gitee或者Github新建一个远程仓库即可,将远程仓库克隆到本机

    git clone [url]
    

    此处克隆的时候如果报错,例如…127.0.0.1 1136…,可能是你的git使用了代理,删除代理就好了

    #删除代理
    git config --global --unset http.proxy
    
  • 以后选择拉取远程仓库使用git clone [URL]命令时,其中的URL可以除了选择https链接,选择SSH的链接,这样在本地某个目录中直接在Git Bash中输入git clone SSH链接即可成功拉取下来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vumL5bOA-1683808749418)(../AppData/Roaming/Typora/typora-user-images/image-20230511174310644.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DznlIBhJ-1683808749419)(../AppData/Roaming/Typora/typora-user-images/image-20230511174328624.png)]


创作不易,欢迎点赞/评论/转载!!

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

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

相关文章

ADV7391BCPZ-ASEMI代理亚德诺ADV7391BCPZ原厂芯片

编辑-Z ADV7391BCPZ参数描述: 型号:ADV7391BCPZ VDD:1.8V VAA:3.3V 全驱动输出电流:34.6 mA 低驱动输出电流:4.3 mA 输出电容:10 pF 模拟输出延迟:6 ns DAC模拟输出倾斜&am…

x509证书-crl证书吊销

标准 CRL fields -- 版本、时间、证书序列号和扩展名 -- 都是在4.1节的ASN.1中定义的 -- AlgorithmIdentifier 在第 4.1.1.2 节中定义 以下各项描述了 X.509 v2 CRL 在 Internet PKI 中的使用。 关于签名值和验证 signatureValue 字段包含根据 ASN.1 DER 编码的 tbsCertList 计…

13-Vue技术栈之路由的使用

目录 1、路由相关理解1.1 vue-router 的理解1.2 对 SPA 应用的理解1.3 路由的理解1.4 路由分类 2、路由的基本使用2.1 实现效果:2.2 实现思路:2.3 实现步骤:2.4 具体代码2.5 几个注意点 3、多级路由(嵌套路由)4、路由的…

中科院学术专用版GPT Academic项目实现

【写在最前】要完成GPT 学术优化 (GPT Academic)这个项目需要一些值得注意的地方: chatGPT账户有余额且未过期!!!有代理工具(类似Clash) 1、代码克隆 https://github.com/binary-husky/gpt_academic 根据…

Java后端调取微信小程序接口,创建微信小程序直播间

前提条件: 1.注册微信小程序 2.获取appId和secret秘钥 3.小程序具备直播权限 小程序直播开发文档网址 目录 1.创建和修改直播间 2.删除直播间 3.获取直播间分享二维码 1.创建和修改直播间 两个功能一起写,区别在于,修改的时候需要多一…

【数字化转型-05】数字化转型中战略驱动的利器——平衡计分卡

今年的4月19日, 华为第20届全球分析师大会上,华为孟晚舟在大会上发表了“初心如磐,奋楫笃行,共赢数字化未来”的主题演讲,其中分享了对数字化转型的三个核心洞见,首先,战略驱动是根本&#xff0…

Mojo:比 Python 快 35000 倍的 AI 编程语言

Mojo:比 Python 快 35000 倍的 AI 编程语言 Mojo是一门刚刚发布的面向 AI 开发人员的编程语言。 Mojo 被设计为 Python 的超集,所以如果你已经掌握了 Python,学习 Mojo 会很容易。关键是 Mojo 将 Python 的易用性与 C 语言的性能相结合&am…

AIGC—— 内容生产力革命的起点

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.AIGC 1.什么是AIGC? 2.AIGC有哪些优势与挑战 (1&#xff0…

51单片机(十)DS1302实时时钟

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

Solon 框架,单月下载量突破100万了!!!

Solon 框架,单月下载量突破100万了。感谢开源的力量和社区的支持,我们同喜同荣!!!目前,作为新成员加入了“可信开源共同体”,也积极参与中科院的“开源之夏”计划,也备受某军工服务商…

【C++入门】你知道C++为什么会有内联函数吗?

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

深度优先遍历和广度优先遍历

深度优先遍历和广度优先遍历 文章目录 深度优先遍历和广度优先遍历图图的实现遍历方式深度优先遍历基本思想广度优先遍历基本思想 完整代码 图 介绍:用于表示多对多的关系 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称…

FFmpeg AAC 解码 PCM

1. 概要与流程图 1.1 AAC 转 PCM,需要解码库来实现,目前了解有三种方式,当前使用的是 FFmpeg 库解码 1) faad 解码库网址:faadhttps://sourceforge.net/projects/faac/files/faad2-src/ 2) fdk-aac 编解码库网址: fdk-aac

接口测试入门:轻松掌握 ,让你的后端“心甘情愿”地配合你

目录 前言 简介 什么是API测试? API测试的必要性 API测试的类型 优势 API测试的挑战 【自动化测试工程师学习路线】 前言 在这篇文章中,我将带你轻松入门接口测试并掌握实用技巧,让你能够与后端开发人员更加顺畅地合作。相信我&…

【量化分析】用mplfinance显示交易图时,处理 Expect data.index as DatetimeIndex?

目录 一、说明 二、程序代码和出错描述 三、合理化建议 3.1 读入数据时指定索引 3.2 读入数据后,使用数据前指定日期(时间戳)索引 一、说明 我打算从比特币数据中获取烛台图。这是我在加载 csv 文件后选择我想要的数据框的代码。然而&…

【2】Kaggle:狗的种类识别,基于论文中的 VGG(11)/ResNet(18)/SENet 结构实现

1.数据集格式 在前面【1】中已经对数据集进行过了处理,在自己实现这一模块,训练数据集的统一格式为下图: 2.VGG11结构 根据论文Karen Simonyan, Andrew Zisserman. Very deep convolutional networks for large-scale image recognition. ICLR, 2015. (VGG) 中的结构,根…

如何在华为云服务器安装MindSpore框架

参考链接 一、获取安装命令 我是在华为云租了一个云服务器,然后系统是Ubuntu18.04,如果不知道自己的系统,可以通过以下方式: 第三方依赖安装方法 1.确认安装Ubuntu 18.04是64位操作系统 确认系统版本号,在终端输入lsb_release…

Linux -- 进阶 Web服务器 虚拟主机 --- 基于 IP 地址

虚拟主机 一个Web 服务器,如果只能运行一个网站的话,那么对于一些经费不是很足的小公司来说,那就 有些奢侈了,资源没有办法完全利用上 ( 无论是 内存,CPU,硬盘,带宽等等 &#xff0…

【网络常用命令汇总】ping和ipconfig命令、nslookup命令、netstat和tracert命令、route和arp命令详解(附图详解)

【写在前面】由于考试将近我也是临时抱个佛脚,之前对网络这块的概念真的只是停留在大学里面学的计算机网络,但是当时并没有接触这些实在的东西,也就只有工作后才会去想那么多,比如网络连通性ping一下就知道,其他的更不…

第07讲:Java High Level Client,读写 ES 利器

SkyWalking OAP 后端可以使用多种存储对数据进行持久化,例如 MySQL、TiDB 等,默认使用 ElasticSearch 作为持久化存储,在后面的源码分析过程中也将以 ElasticSearch 作为主要存储进行分析。 ElasticSearch 基本概念 本课时将快速介绍一下 E…