Git 学习笔记(基础篇)

来源:互联网 发布:第十域辅助软件 编辑:程序博客网 时间:2024/05/19 20:59

1. 命令初识

查看GIT版本

git --version

在Global级别设置UserName(推荐使用)

git config --global user.name ’Freud Kang‘ 

在当前目录界别设置UserName(优先级高)

git config user.name 'Freud Kang'

在Global级别设置UserEmail

git config --global user.email ’luoyan35714@126.com‘ 

初始化一个GIT Repository(仓库)

git init 

下载远程代码仓库

git clone remote_url

添加file到.git/index空间Staging area

git add ‘file’ 

提交所有修改到Repository

git commit -m ’Commens For Commit‘

讲此目录下所有修改的文件添加到Staging area并提交

git commit -a -m ’Commens For Commit‘

在GIT仓库中删除文件

git rm 'file'

(LINUX)sha1 file 查看sha1加密后的文件值(20byte即160bit~2的160次方种情况)


从Repository中检出在工作目录丢失或者误操作的文件。

git checkout -f HEAD  || git checkout -f fileName

查看文件在经过SHA1加密后的字符串

git hash-object ’FileName‘

查看反加密后的文件内容

(BLOB)git show ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘ 

 查看反加密后的Tree对象的内容

(TREE)git ls-tree ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘

查看反加密后的Commit对象的内容

(COMMIT)git show -s --pretty=raw ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘


查看此对象的类型(BLOB.TREE.COMMIT)

git cat-file -t ’SHA1加密字符串(只需唯一标识此字段的前几位即可)‘

查找此目录下的FILE类型的文件

find ./git/objects/ -type f 

查找此目录下Directory类型的文件

find ./git/objects/ -type d

统计FILE类型的文件个数

find ./git/objects/ -type f | wc -l 

给当前最新的commit打一个TAG(轻量级),对象个数不会增加,只是会在.git/refs/tags/tagname文件中添加一个Commit HASH Code的引用

git tag “tag_name” 

 给当前最新的commit打一个TAG(重量级),会在.git/objects下生成一个新的tag对象,并在.git/refs/tags/tagname文件中添加一个tag HASH Code的引用(好处:可以添加更多的注释)

git tag -a 'TAG_NAME' -m 'Commens'

把某个TAG的源码打包成为zip文件,其中目录为打包后zip的首目录。

git archive --format=tar --prefix='目录' Tag_Name | gzip > 文件名

压缩文件名  解压缩文件

tar zxvf 

查看分支,有*的代表当前工作分支

git branch 

创建分支

git branch ’分支名字‘ 

切换到需要活动的分支

git checkout ’分支名字‘ 


从源分支把代码Merge到本分支

git merge ’源分支名字‘

删除分支(大写D代表强制删除,小写d代表普通删除)

git branch -D ’分支名字‘  

改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git branch -m <old_name> <new_name> 

切換 branch (注意如果你有檔案修改了卻還沒 commit,會不能切換 branch)
git checkout <branch_name> 

本地建立 branch 並立即 checkout 切換過去
git checkout -b <new_branch_name> (<from_branch_name>) 

刪除 local branch
git branch -d <branch_name> 

删除远程Branch
git push origin :{branch_name}

检出一个远程的Branch

git checkout -b develop origin/develop

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

0 0
原创粉丝点击