Git 是什么?
Git 是一个分布式版本控制系统(Version Control System),它的核心作用是追踪和管理文件和代码的变化,帮助个人或团队高效协作开发。简单来说,Git 就像一个“时间机器”,能记录你项目中每一次修改的历史,并能随时回退到任意版本。
flowchart LR %% 定义统一样式 classDef defaultStyle fill:#fefefe,stroke:#4B83A1,stroke-width:2px,rx:6,ry:6,color:#333; %% 节点 A[工作区] -->|git add| B[暂存区] B -->|git commit| C[本地仓库] C -->|git push| D[远程仓库] %% 应用样式 class A,B,C,D defaultStyle;
基础 #
Git Commit
- -m (message) 提交当前 HEAD 分支的更改
Git Branch (name)
创建一个分支
- -f (name) 创建分支并切换到该分支
Git Merge
(branch_name)
- 基于当前 HEAD 分支,将 branch_name 分支合并到目前分支,创建一个新的提交记录(本质是合并两个 parent 结点)
Git Rebase(变基)
(branch_name)
- 类似于 merge,但是区别是不创建新的提交记录,而是将非公共部分的所有部分转移到 branch_name 下方
高级 #
分离 HEAD #
Git Checkout
[name] 将 HEAD 指针移动到对应提交记录
相对引用 #
-
^
(name)^ 可以选择当前提交的 parent 结点,即上一次提交 -
~
(name)~(数字) 可以选择当前提交的第 n 个 parent 结点
撤销变更 #
Git Reset
(name) 可以把分支回退对应的提交记录,相当于“改写历史“,只适用于本地仓库Git Revert
(name) 新建一个提交记录,等同于原始的上一次提交记录的拷贝,适用于远程仓库
远程 #
远程仓库本质是本地仓库在远程计算机上的拷贝/备份。
- 强大备份
- 社交化
Git Clone
在本地创建一个远程仓库的拷贝
在本地仓库多了名为 origin/main 的分支,也叫远程分支
远程分支反映了远程仓库的状态
在切换到远程分支时,自动进入分离 HEAD 状态 >
远程分支命名规范
<remote_name>/<branch_name>
origin/main:远程分支 main,仓库名 origin
Git Fetch向远程仓库传输数据以及从远程仓库获取数据
- 从远程仓库下载本地仓库缺失的提交记录
- 更新远程分支指针
通过
Git Pull 先抓取更新,再合并到本地分支(git fetch+git merge)
http://
或者git://
与远程仓库通信
不会改变本地仓库
实用指令
git pull --rebase
确保本地仓库与远程同步,才可以 Push
Git Push 将变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录(发布成果) (这时候 main 分支和 origin/main 分支应该指向同一个记录)
git 区域 #
工作区 #
除了.git 隐藏目录以外,都属于工作区范畴
版本库(repository) #
.git 隐藏目录是 Git 的版本库,版本库中有很多东西,最重要的是stage(index),也就是暂存区,还有 Git 自动创建的第一个分支 master,以及指向 master 的HEAD 指针