乐趣区

关于git:Git版本控制

集中化版本控制系统

分布式版本控制系统

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]    增加指定文件到暂存区
退出移动版