• git的使用


    介绍

    Git是一款分布式源代码管理工具(版本控制工具) 。

    Git得其数据更像是一系列微型文件系统的快照。使用Git,每次提交或保存项目状态时,Git基本上都会记录当时所有文件的外观,并存储对该快照的引用。为了提高效率,如果文件没有改变,Git不会再次存储文件,只是指向它已存储的上一个相同文件的链接。Git认为它的数据更像是一个快照流,会将数据作为项目的快照存储一段时间。可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
    【GeekHour】一小时Git教程

    git工作区域与文件状态

    工作区域

    image-20230527163933717

    工作区:就是你在电脑里能看到的目录

    暂存区:工作区中的隐藏目录.git文件不是工作区而是git的版本库,其中最重要就是称为stage(或者index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

    本地仓库:commit时文件的存储仓库,也是位于.git中

    文件状态

    image-20230527165012122

    未跟踪:工作目录下新创建的文件,没有使用git add指令添加到git的跟踪文件中

    未修改:已经添加到git的版本管理中但是文件没有发生修改

    已提交:已经发生修改的文件

    已暂存:添加到git版本管理的文件

    常见的git命令

    新建仓库

    创建git仓库目录,会在当前目录下生成my-repo的目录并且在这个目录下生成.git目录

    git init my-repo
    
    • 1

    克隆一个远程项目在当前目录下

    git clone project-addr
    
    • 1

    添加和提交

    查看当前仓库的状态

    git status
    
    • 1

    查看当前暂存库文件

    git ls-files
    
    • 1

    将文件添加到暂存区,等待提交

    git add fileName
    git add *.txt # 以通配符的方式提交到暂存区
    git add . #将当前工作目录的所有文件都提交到暂存区
    
    • 1
    • 2
    • 3

    将文件从暂存区去除

    git rm --cached fileName
    
    • 1

    将文件提交到本地仓库,只会提交暂存区中的文件而不会提交工作区的中的其他文件

    git commit -m "commit info"
    
    • 1

    查看简洁的提交记录

    git log --online
    
    • 1

    git reset 回退版本

    image-20230527170832028

    三个命令参数的区别是在本地的工作区、暂存区代码不一致时才会有区别

    git reset --soft:回退到指定版本,并且保留工作区域暂存区修改的代码

    git reset --hard:回退到指定版本,既不保留工作区也不保留暂存区的代码修改

    git reset --mixed:回退到指定版本,保留工作区的代码变化,不保留暂存区的代码变化

    例如此时在目录下新增一个文件三,然后回退到上一个版本,soft方式会发现工作区域暂存区的代码都有文件三,而hard方式文件都不在,mixed方式工作区在但暂存区不在,如下图

    image-20230527171436653

    使用git diff查看差异

    查看工作区、暂存区的差异

    git diff 
    
    • 1

    image-20230527172929700

    比较工作区域版本库的差异,HEAD指向最新的暂存区代码

    git diff HEAD
    
    • 1

    比较暂存区域版本库的差异

    git diff --cached
    
    • 1

    比较特定版本的文件差异,5af9ob8/b270efb是两个版本的版本值

    git diff 5af9ob8 b270efb
    
    • 1

    比较上一个版本与最新版本的差异

    git diff HEAD~ HEAD
    git diff HEAD^ HEAD
    git diff HEAD~2 HEAD #上两个版本与最新版本的差异
    
    • 1
    • 2
    • 3

    git rm删除文件

    同时删除工作区与暂存区的文件

    git rm file1.txt
    
    • 1

    删除暂存区的文件,保留工作区中文件

    git rm --cached file.txt
    
    • 1

    忽略文件

    忽略文件,.gitignore文件中记录了哪些需要被忽略的文件名称,支持通配符、文件夹(空文件夹不支持)

    git access.log > .gitignore
    
    • 1

    分支

    创建新的分支

    git branch my-branch
    
    • 1

    查看项目所有的分支

    git branch
    
    • 1

    删除分支

    git branch -d my-branch
    
    • 1

    切换到指定分支

    注意:git checkout除了用来切换分之外还可以用来恢复到文件,因此当文件名与分支名相同时会产生歧义,这也是增加switch指令的原因

    git checkout my-branch
    git switch my-branch # 2.23版本之后支持的分支切换命令
    
    • 1
    • 2

    合并分支,需要先确认当前在什么分支下例如在master分支,然后使用下面指令代表将my-branch分支合并到当前所在的master分支上

    git merge my-branch
    
    • 1

    Rebase操作

    找到当前分支与main分支的共同节点,以dev分支为基础,将main分支合并到dev分支之后

    git switch main
    git rebase dev
    
    • 1
    • 2

    image-20230527182150024

  • 相关阅读:
    github action 基于个人项目实践
    如何更好的选择服务器硬盘?
    什么是 游戏引擎 ?各个主流引擎的区别
    CEF | CEF浏览器客户端能扩展:实现下载列表
    postgresql数据库定时备份到远程数据库
    springBoot如何【禁用Swagger】
    【侯捷C++面向对象高级编程】(下)
    umicv cv-summary1-全连接神经网络模块化实现
    Array.from()的使用方法(数组去重,伪数组转为数组,数组浅克隆),Set和Map数据结构
    iOS 蓝牙连接 connectionSupervisionTimeout 是720ms 还是 2~6s
  • 原文地址:https://blog.csdn.net/qq_42910468/article/details/130904408