集中化版本控制系统
分布式版本控制系统
Git工作原理
Git文件的四种状态
- Untracked: 未退出到git库,即文件未被跟踪。通过git add 能够变为Staged状态
- Unmodified:曾经退出git库,未修改, 即版本库中的文件快照内容与文件夹中还完全一致。应用git remove移出版本库, 则成为Untracked文件。
- Modified:文件被批改
- staged:暂存状态. 执行git commit则将批改同步到库中, 此时版本库中的文件和本地文件又变为统一, 文件为Unmodified状态.
Git工作区域
- Workspace:本地的文件和目录
- Index/Stage:暂存区,即记录用户操作,个别寄存在 .git目录下,即.git/index,长期寄存未提交的改变。
- Repository:本地版本库,git clone 就是把近程仓库克隆到本地仓库。其中HEAD指向最新放入仓库的版本。执行git commit,文件改变提交到本地版本库。
- Remote:近程仓库,相似github
Git工作流程
- 从近程仓库拉取文件代码;
- 在workspace,增删改查;
- 提交文件至暂存区;
- 提交文件至本地版本库;
- 本地版本库文件推送至近程仓库;
Git根本常用命令
git初始化配置
git --version 查看git版本git config --list 查看是否配置用户和邮箱(每次提交都会援用-必配)git config --system 以后设施的所有用户git config --config 只实用于以后用户git config 仅对以后我的项目其作用git config --config user.name "demo" 指定用户git config --config user.email "123@qq.com" 指定邮箱
git目录构造
git init 初始化仓库find ./ -type f 查看文件,不包含目录
git对象(存储内容)
key(hash值):value(数据)
echo 'test content' | git hash-object -w --stdin 规范输出流存储数据(返回对应的hash值)git hash-object 文件门路(返回对应的hash值)git cat-file -p hash值 查看对应的文件内容git cat-file -t hash值 查看对应的对象
树对象(存储git对象,暂存区快照版本)
和stage区域无关,git对象和stage区域无关
暂存区的数据提交到版本库后,暂存区的信息不会失落
git ls-files -s 查看stage/index区域的信息find ./.git/objects/ -type f 查看版本库信息
commit对象(版本库我的项目版本)
封装树对象,即用户、正文等
git add
理论流程:workspace先提交到版本库再提交到暂存区,不是惯例了解的提交
git add . 增加当前目录的所有文件到暂存区git add [dir] 增加指定目录到暂存区,包含子目录git add [file1] 增加指定文件到暂存区