git

何为git?

git是一个分布式版本控制系统 (这话听起来很高大上,不懂没事)

什么是版本控制系统呢?

它是一种用于管理软件代码或其他文件变更的工具

简单来说,就是用于管理代码的仓库,它可以记录文件的修改历史,回溯到之前的版本,这样我们就不需要将代码复制一份保存好,在下一次修改后发现一堆错误然后想用上一次的旧版本,去找自己原来保存的(如果项目很大,这将会非常麻烦)。

版本控制系统有两中:

1.集中式CVCS Centeralized Version Control System

所有的版本数据保存在一个中央服务器上,使用简单,但是有一个最大的弊端:单点故障问题,如果中央服务器或网络出现问题,那么所有人就无法工作了

2.分布式DVCS Distributed Version Control System

每个开发者都有完整的代码库副本,而且拥有完整的代码库历史,操作相比复杂,但即使没有网络连接,开发者也可以继续工作

git的原理(可以不看,会用就行)

git 的数据存储

git的核心是数据存储模型,叫做快照流

什么是快照?

快照是包含当前版本所有文件和目录 的一个完整副本

每次提交时,git会创建当前版本的快照并存储一个指向该快照的指针,如果有的文件没有发生变化,git不会存储文件的新副本,而是链接到之前的快照

与传统的基于差异(diff)的版本控制系统不同,git每次保存的是快照,而其他版本控制系统仅仅是存储文件的差异(diff)

对象

git通过对象来存储数据,有四种对象类型:

**1.blob(文件内容)**:存储文件内容的二进制数据

**2.tree(目录结构和文件名)**:存储目录结构(文件和子目录)的信息

**3.commit(提交信息和父提交)**:存储提交信息,作者,时间戳,指向父提交的指针

**4.tag(标签)**:存储标签信息,通常用于标记重要的提交

git 的工作流程

分成四个区域:工作区,暂存区,本地仓库,远程仓库

工作区:

该项目的所有文件(存放于本地文件系统里面的)

暂存区:

作为一个缓冲的区域,存储了准备在下次提交的文件变更,通过git add将文件从工作区添加到暂存区

本地仓库:

存储所有版本历史记录的地方,通过git commit 提交

远程仓库:

通常在服务器上面(github,gitLab)可以通过git pull远程仓库里面的文件变更内容拉取到本地仓库,用git push将本地仓库的变更内容推送到远程仓库

文件的状态

Untracked(未追踪)

新添加的文件,还没有被git管理

Unmodified(未修改)

文件被git管理,且自从上次提交以来没有修改

Modified(已修改)

文件已经被修改,但尚未添加到暂存区

Staged(已暂存)

文件已经被修改并且添加到暂存区,准备在下一次提交中提交

git该怎么使用

使用方式:

1.命令行

2.图形化界面(GUI)(在解决合并冲突时很好用)

3.IDE插件或扩展

省略git的安装

git的配置

1
2
git config --global user.name "你的名字"
git config --global user.email "你的邮箱地址"

1.创建一个仓库

创建新仓库
1
git init
克隆现有仓库
1
git clone <respsitory_url>
添加和提交
1
2
3
git add <file>          # 添加单个文件
git add . # 添加当前目录下的所有更改文件
git commit -m "提交信息"

查看版本历史

1
git log

分支管理

暂且不说

创建仓库,上传代码

  1. 初始化本地仓库

    1
    git init
  2. 将所有文件添加到本地仓库

    1
    git add .
  3. 将本地仓库与远程仓库关联

    1
    git remote add origin 仓库网址
  4. 将项目提交到本地仓库

    1
    git commit -m "first commit"
  5. 将项目推送到远程仓库

    1
    git push -u origin master