1. 命令
git --version查看GIT版本
git config --global user.name ’Freud Kang‘ 在Global级别设置UserName(推荐使用)
git config user.name ‘Freud Kang‘ 在当前目录界别设置UserName(优先级高)
git config --global user.email ’luoyan35714@126.com‘ 在Global级别设置UserEmail
git init 初始化一个GIT Repository(仓库)
git add ‘file’ 添加file到.git/index空间Staging area
git commit -m ’Commens For Commit‘提交所有修改到Repository
git commit -a -m ’Commens For Commit‘讲此目录下所有修改的文件添加到Staging area并提交
git rm ‘file‘ 在GIT仓库中删除文件
(LINUX)sha1 file 查看sha1加密后的文件值(20byte即160bit~2的160次方种情况)
git checkout -f HEAD || git checkout -f fileName 从Repository中检出在工作目录丢失或者误操作的文件。
git hash-object ’FileName‘ 查看文件在经过SHA1加密后的字符串
(BLOB)git show ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘ 查看反加密后的文件内容
(TREE)git ls-tree ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘ 查看反加密后的Tree对象的内容
(COMMIT)git show -s --pretty=raw ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘查看反加密后的Commit对象的内容
git cat-file -t ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘查看此对象的类型(BLOB.TREE.COMMIT)
find ./git/objects/ -type f 查找此目录下的FILE类型的文件 find ./git/objects/ -type d 查找此目录下Directory类型的文件
find ./git/objects/ -type f | wc -l 统计FILE类型的文件个数
git tag “tag_name” 给当前最新的commit打一个TAG(轻量级),对象个数不会增加,只是会在.git/refs/tags/tagname文件中添加一个Commit HASH Code的引用
git tag -a ‘TAG_NAME‘ -m ‘Commens‘ 给当前最新的commit打一个TAG(重量级),会在.git/objects下生成一个新的tag对象,并在.git/refs/tags/tagname文件中添加一个tag HASH Code的引用(好处:可以添加更多的注释)
git archive --format=tar --prefix=‘目录‘ Tag_Name | gzip > 文件名 把某个TAG的源码打包成为zip文件,其中目录为打包后zip的首目录。
tar zxvf 压缩文件名 解压缩文件
git branch 查看分支,有*的代表当前工作分支
git branch ’分支名字‘ 创建分支
git checkout ’分支名字‘ 切换到需要活动的分支
git merge ’源分支名字‘ 从源分支把代码Merge到本分支
git branch -D ’分支名字‘ 删除分支(大写D代表强制删除,小写d代表普通删除)
2. Git Area(3种空间)
Working directory工作目录,指没有添加到GIT Track中的文件,GIT不认识此文件
Staging area阶段空间,指添加到GIT的track中但是还没有Commit过的空间,.git/index指的就是staging area,需要从Working Directory中Add进入此空间
Repository仓库,指的是本地.git 文件夹下的东西,当Commit之后./git/objects目录下的对象值得就是此仓库,需要从Staging Area中Commit进来
3. 对象(Object)一旦修改永远不可以改变
blob文件对象:不包含文件名,不包含数据大小
tree目录对象:包含文件名
commit提交对象:包含Tree对象
TAG对象:可以认为是一个对象或者是引用
4. 引用(Reference)可以动态修改
Branch :master是缺省分支,创建完Branch后会在.git/refs/heads/BranchName下有分支名字的文件,其内容为所指向的Commit对象40位HASH值
HEAD(永远指向当前活动的Branch)在.git/HEAD文件中存储一个引用指向refs/heads/master,此文件中有HASH值即COMMIT对象的HASH值
Remote Branch
5. Merge
Faster-Forward
Three-Way Merge
NOTES:
.git/objects/**/************* 第一个**指的是SHA1加密后的前两位,第二个指的是后38位
我的GitHub
https://github.com/luoyan35714