什么是 Git
Git 是一个开源的分布式版本控制系统
当然,除了 Git 以外还有其他版本管理系统,如 CVS、Subversion 或 Perforce。但他们对数据信息的存储方式上有差别。
- 以文件变更列表的方式存储信息(存储每个文件与初始版本的差异)
- 把数据看作是对小型文件系统的一系列快照(snapshot)( 存储项目随时间改变的快照)
.git
文件夹是 Git 版本库的核心,它使得 Git 能够追踪文件的更改、管理分支、记录提交历史等。这个文件夹通常位于项目的根目录下。(隐藏)
有端联想操作系统中基于 inode 表的文件系统也利用这个技术,把 inode 表拷贝一份作为快照(系统还原点?)保存下来,这样子可以进行回退,实现基于快照的写时拷贝
Git 的四个工作区及状态
- 工作区(Work Space):未追踪(unstage/untracked)
- 暂存区(Staging area):已追踪(stage)
- 本地仓库(Local Repository)
- 远程仓库 (Remote Repository)
Git 工作流实操
开发时,我们可以有两种方式开始:
- 先在远端(以 Github 为例)创建好项目,再
git clone
到本地仓库(比较简单)
- 先在本地创建项目
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 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
|
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 2 3 4
| git clone <repositoryURL>
//查看本地与远程仓库联系 git remote -v
|
- 远程仓库 --> 本地仓库 -->工作区
1 2 3 4 5 6 7 8
| //更新到本地仓库 git fetch <repository> <branch>
//查看是否有问题 git diff <repository> <branch>
//没有问题,把远程仓库整合到工作区 git pull
|
//本文由各处材料缝合而成,自己理解还不到位,仅作个人学习参考使用//
参考资料:
-
Git - Git 是什么? (git-scm.com)
-
【Git】(1)—工作区、暂存区、版本库、远程仓库 - 雨点的名字 - 博客园 (cnblogs.com)
-
Git 工作流和核心原理 | GitHub 基本操作 | VS Code 里使用 Git 和关联 GitHub_哔哩哔哩_bilibili
-
Git 详解(带图) — 本地电脑的工作区、暂存区、本地仓与远程仓_git 本地存储库与工作目录-CSDN 博客
-
给学完 Git,还不会用 GitHub 的朋友们_哔哩哔哩_bilibili