集中化版本控制系统

分布式版本控制系统

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]    增加指定文件到暂存区