Git 学习笔记(LOCAL基础篇)

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代表普通删除)


git branch -m <old_name> <new_name> 改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git checkout <branch_name> 切換 branch (注意到如果你有檔案修改了卻還沒 commit,會不能切換 branch,解法稍後會談)
git checkout -b <new_branch_name> (<from_branch_name>) 本地建立 branch 並立即 checkout 切換過去
git branch -d <branch_name> 刪除 local branch


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

Git 学习笔记(LOCAL基础篇)

上一篇:iOS菜鸟学习--如何避免两个按钮同时响应


下一篇:一步一步安装vertica7.0.x(操作系统:CentOS6.x)