什么是 Git

Git 是一个开源的分布式版本控制系统

当然,除了 Git 以外还有其他版本管理系统,如 CVS、Subversion 或 Perforce。但他们对数据信息的存储方式上有差别。

  • 以文件变更列表的方式存储信息(存储每个文件与初始版本的差异)
    delta-based
  • 把数据看作是对小型文件系统的一系列快照(snapshot)(  存储项目随时间改变的快照)
    snapshot stream

.git  文件夹是 Git 版本库的核心,它使得 Git 能够追踪文件的更改、管理分支、记录提交历史等。这个文件夹通常位于项目的根目录下。(隐藏)

有端联想操作系统中基于 inode 表的文件系统也利用这个技术,把 inode 表拷贝一份作为快照(系统还原点?)保存下来,这样子可以进行回退,实现基于快照的写时拷贝

Git 的四个工作区及状态

  • 工作区(Work Space):未追踪(unstage/untracked)
  • 暂存区(Staging area):已追踪(stage)
  • 本地仓库(Local Repository)
  • 远程仓库 (Remote Repository)
    areas

Git 工作流实操

开发时,我们可以有两种方式开始:

  1. 先在远端(以 Github 为例)创建好项目,再git clone到本地仓库(比较简单)
  2. 先在本地创建项目git init,再git push推送到远程仓库(相对复杂)

本地建仓库再推送远端

  • 进行用户设置
    设置名称和邮箱,才知道是谁进行了操作(出事好追责
1
2
3
4
5
git config --global user.name <example>
git config --global user.email <[email protected]>

//查看配置
git config --list
  • 仓库初始化
    初始化后会发现多了.git隐藏文件,默认处于主分支上(master/main)
1
git init
  • 分支
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//创建分支
git branch <branchName>

//删除分支
git branch -d <branchName> //合并后才可删除

//合并分支
git merge <branchName>

//修改分支名
git branch -m <newName> //分支需要和远程库的分支名一致时才可push

//跳转分支
git switch <branchName>
  • 添加远程仓库
1
git add <alias> <repositoryURL>  //常见别名origin
  • 本地 commit 和远程库不一致时
1
2
git pull --rebase <repository> <branch>  //rebase关键,把远程commit变为本地旧commit
git push //main分支同步后,本地和远程commit一致

1. 工作区 --> 暂存区(add)

在工作区新建文件并进行文件操作(文件处于 unstage 状态

1
2
3
4
5
6
7
8
//add指定文件
git add <filename>

//add全部
git add .

//查看工作区状态
git status

2. 暂存区 --> 本地仓库(commit)

add 到暂存区后可以提交到本地仓库,同时有日志记录

1
2
3
4
5
//没问题,提交
git commit -m "message"

//查看前面版本
git log

3. 本地仓库 --> 远程仓库(push)

1
git push <repository> <branch>

远程仓库拉取项目

  1. 远程仓库 --> 工作区
1
2
3
4
git clone <repositoryURL>

//查看本地与远程仓库联系
git remote -v
  1. 远程仓库 --> 本地仓库 -->工作区
1
2
3
4
5
6
7
8
//更新到本地仓库
git fetch <repository> <branch>

//查看是否有问题
git diff <repository> <branch>

//没有问题,把远程仓库整合到工作区
git pull

//本文由各处材料缝合而成,自己理解还不到位,仅作个人学习参考使用//

参考资料:

  1. Git - Git 是什么? (git-scm.com)

  2. 【Git】(1)—工作区、暂存区、版本库、远程仓库 - 雨点的名字 - 博客园 (cnblogs.com)

  3. Git 工作流和核心原理 | GitHub 基本操作 | VS Code 里使用 Git 和关联 GitHub_哔哩哔哩_bilibili

  4. Git 详解(带图) — 本地电脑的工作区、暂存区、本地仓与远程仓_git 本地存储库与工作目录-CSDN 博客

  5. 给学完 Git,还不会用 GitHub 的朋友们_哔哩哔哩_bilibili