本文最后更新于 2023-07-16,文章内容可能已经过时,请注意内容的辨别。

GiT

版本控制系统

版本控制系统是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理系统

常用版本控制系统

GIT

SVN

Gti与svn的区别

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

什么是分布式

分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

什么是元数据:任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。

什么是元数据管理:元数据管理有两种方式。集中式管理和分布式管理。集中式管理是指在系统中有一个节点专门司职元数据管理,所有元数据都存储在该节点的存储设备上。所有客户端对文件的请求前,都要先对该元数据管理器请求元数据。分布式管理是指将元数据存放在系统的任意节点并且能动态的迁移。对元数据管理的职责也分布到各个不同的节点上。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。git能瞬间实现底层类似于指针操作

4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

6、svn是一个中央服务器 git却是都是中央服务器 各有优缺点

7.svn提交一次,git要提交两次,一次本地一次服务器

安装

无脑下一步

pull push commit update add

工作流程

  • 克隆 Git 资源作为工作目录。

  • 在克隆的资源上添加或修改文件。

  • 如果其他人修改了,你可以更新资源。update

  • 在提交前查看修改。

  • 提交修改。

  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

Git 工作区、暂存区和版本库

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

  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

Git 创建仓库

  1. 在D盘新建文件夹叫做gitReop

    Git GUI here是Git软件的图形化操作入口,Git Bash here是Git软件的命令行操作入口。

    因为git的命令简单所以我们学习bash

    Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。

    看到.gif就是成功

  2. 注册码云(github太卡,码云是国内的github)

  3. 验证邮箱

  4. git软件上配置用户名和邮箱名

git config --global user.name "xxx"

git config --global user.email "xxxx"

这个没啥意义,给你自己看的

命令:

git init 初始化git仓库

git add 文件名 指定文件名提交

git add .把所有修改的都提交

git status 查看转态

git commit - m 'xxxx' 提交 -m是提交缓存区文件

$ git push https://gitee.com/lian_fengzzz/kj08.git master 提交到远程

$ git pull https://gitee.com/lian_fengzzz/kj08.git 拉代码到本地

.gitignore文件

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
​
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
​
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
​
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
​
### VS Code ###
.vscode/
​