网站首页 > 基础教程 正文
什么是 Git?
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。
Git 的特性
Git 之所以快速和高效,主要依赖于它的两个特性:直接记录快照,而非差异比较;近乎所有操作都是本地执行。
1.SVN 的差异比较
传统的版本控制系统(例如 SVN)是基于差异的版本控制,它们存储的是一组基本文件和每个文件随时间逐步累积的差异。
好处:节省磁盘空间,缺点:耗时、效率低。在每次切换版本的时候,都需要在基本文件的基础上,应用每个差异,从而生成目标版本对应的文件。
2.Git 的记录快照
Git 快照是在原有文件版本的基础上重新生成一份新的文件,类似于备份。为了效率,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。
缺点:占用磁盘空间较大
优点:版本切换时非常快,因为每个版本都是完整的文件快照,切换版本时直接恢复目标版本的快照即可。
特点:空间换时间
3.近乎所有操作都是本地执行
在Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。基于这一特点,Git在断网后依旧可以在本地对项目进行版本管理,只需联网后,把本地修改的记录同步到云端服务器即可。
4.Git 中的三个区域
使用Git 管理的项目,拥有三个区域,分别是工作区、暂存区、Git 仓库。如果把这些区域比作现实中纸质文件的人工处理和收纳管理,三个区域分别负责的任务是:
工作区:负责处理工作的区域。
暂存区:已完成的工作的临时存放区域,等待被提交。
Git 仓库:最终的存放区域。
5.Git 中的三种状态
已修改:表示修改了文件,但还没将修改的结果放到暂存区
已暂存:表示对已修改文件的当前版本做了标记,使之包含 在下次提交的列表中;
已提交:表示文件已经安全地保存 在本地的Git 仓库中。
注意:工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。 如果文件已修改并放入暂存区,就属于已暂存状态。 如果Git 仓库中保存着特定版本的文件,就属于已提交状态。
6.基本的Git 工作流程
基本的Git 工作流程如下:
①在工作区中修改文件
②将你想要下次提交的更改进行暂存
③提交更新,找到暂存区的文件,将快照永久性存储到Git 仓库.
- 上一篇: git merge和git rebase有什么区别?
- 下一篇: Dockerfile详解
猜你喜欢
- 2025-04-23 git merge和git rebase有什么区别?
- 2025-04-23 git用法普及之git clone
- 2025-04-23 git 子模块
- 2025-04-23 Git 分支管理策略汇总
- 2025-04-23 掌握这 20 个 Git 命令,成为团队协作高手!
- 2025-04-23 Git使用的小技巧
- 2025-04-23 git笔记
- 2025-04-23 `git fetch`、`git clone` 和 `git pull` 的详细对比
- 2024-07-17 听说你还在用 Git 命令解决代码冲突?
- 2024-07-17 git pull/push 命令时每次都需要输入name/password
- 04-23【docker系列】打造个人私有网盘zfile
- 04-23Dockerfile最佳实践:构建优雅高效的容器镜像
- 04-23Dockerfile优化有技巧,Docker镜像构建提速10倍!
- 04-23IT工程师都需要掌握的容器技术之Dockerfile
- 04-23Dockerfile简单使用
- 04-23Dockerfile编写规范:打造属于你的容器化世界
- 04-23探秘Dockerfile:编写规范与最佳实践
- 04-23Dockerfile详解
- 最近发表
- 标签列表
-
- 菜鸟教程 (58)
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)