用富文本来写
02 | 安装Git
user.email是需要能够收到邮件的有效的email
进入一个文件夹,创建一个仓库,也就是创建了一个文件夹,在进入新创建的这个文件夹
Git的思路是,先拷贝、修改文件,查看一下效果怎么样,没有问题之后;通过git add命令添加入暂存区,然后git commit 提交
相关的git命令
git init git_learning cd git_learning ls -al git config --global --list git config --local user.name 'Eileence' git config --local user.email '2698892343@qq.com' git config --local --list cp ../0-material/readme .//拷贝到当前目录 git commit -m'Add readme'//解释添加的原因是什么 提交 git add readme//对新添加的文件,执行这个命令 存入暂存区 git status git log cp ../0-material/index.html.01 index.html cp -r ../0-material/images . git status git add .//将所有的文件加到暂存区
对于已经添加到暂存区的文件,然后有进行了修改,不用再次添加到暂存区,git add -u命令进行更新就行了。
重命名命令
通过git log查看版本的演变历史
//查看分支
git branch -v
//创建一个新的分支 命名为temp,并且连接到这个分支上去
git checkout -b temp 3c9a7b4ff19109
//也可以不添加到工作区,直接提交commit
git commit -am'Add test'
//查看当前分支
git branch -av
//查看所有分支的版本历史
git log -all
//以图形化的方式查看所有分支的演进历史(从下往上看的)
//查看简单的分支
git log --oneline
//查看所有分支的简化
git log --oneline --all
//查看最近的n(4)个分支
git log --oneline --all -n4(也支持后面加graph)
//想要查看关于git log的更多命令
$ git help --web log
//修改默认的编辑器,因为我之前是用notepad++
$ git config --global core.editor vim
通过图形界面工具查看版本历史
使用gitk命令
里面有path tree等参数
还有Commiter和Author可以是不同的
还可以new view,查看图形分支。
还可以对每一次的commit添加标签tag
探秘.git目录
//看一下.git目录下面都有哪些文件
Guopeng@DESKTOP-FCRRADF MINGW64 ~/Git_Repository/git_learning/.git (GIT_DIR!)
$ ls -al
total 22
drwxr-xr-x 1 Guopeng 197121 0 2月 18 11:12 ./
drwxr-xr-x 1 Guopeng 197121 0 2月 18 11:12 ../
-rw-r--r-- 1 Guopeng 197121 15 2月 18 10:58 COMMIT_EDITMSG
-rw-r--r-- 1 Guopeng 197121 130 2月 16 19:10 config
-rw-r--r-- 1 Guopeng 197121 73 2月 16 19:10 description
-rw-r--r-- 1 Guopeng 197121 589 2月 18 10:58 gitk.cache
-rw-r--r-- 1 Guopeng 197121 23 2月 18 11:12 HEAD
drwxr-xr-x 1 Guopeng 197121 0 2月 16 19:10 hooks/
-rw-r--r-- 1 Guopeng 197121 554 2月 18 11:12 index
drwxr-xr-x 1 Guopeng 197121 0 2月 16 19:10 info/
drwxr-xr-x 1 Guopeng 197121 0 2月 16 19:23 logs/
drwxr-xr-x 1 Guopeng 197121 0 2月 18 10:58 objects/
drwxr-xr-x 1 Guopeng 197121 0 2月 16 19:10 refs/
$ cat HEAD
ref: refs/heads/master
这里指向的是当前的分支,分支变,也会跟着变。
关于.git下面的config文件
如果进行git config local操作,会有最下面的[user]信息,但是我的没有,因为我没有进行过相关操作。修改config文件,也会改变user.name的设定。
关于上面的refs文件夹,里面的tags是标签,也叫里程碑,如版本几等等。heads是分支。
可以看到在head里面存储的是各个分支
以上,查看了分支的hash码,根据一部分hash码(这个hash码的长短只要能唯一标识它就行了),查看了分支是commit类型的。
查看了当前的分支;查看了当前的分支,以及temp分支的哈希码。
如上图,进入tag文件夹中,里面有一个tag js01,产看它的哈希值。查看这个tag里面的具体内容,有一个commit对象等等。
关于.git文件夹里面的objects文件夹
如上图,分成了这样一些文件夹,pack是对文件的进一步整合。进入e8文件
如上图,e8加上里面的哈希码可以代表文件,参数-t代表查看文件类型,参数-p代表查看文件内容。查看之后发现,里面有一个blob类型的sytle.css文件,借助这个文件的hash值,进一步查看,就会看到style.css的文件内容了。
到此,接触到了git的主要的三种对象:commit;tree;blob。
commit、tree、blob三个对象之间的关系
如上图,一个commit对象对应一个tree(视图)(如蓝色)。根据这个tree对象的地址找到这个tree的结构(如黄色)
在这个tree(黄色)的结构中,文件夹对应的对象是tree,文件对应的对象是blob。在git中,内容相同的文件被认为是相同的blob。
以之前的项目代码验证一下。如下图
如下图
图片不能解析,文本可以解析,如下图。如果解析下面的blob图片文件,会出现乱码。
数一数tree的个数
如下图,当有东西加入git的暂存区的时候,git就会创建相关的blob,这一点会在.git/objects目录中有相关的体现
把doc文件加入暂存区以后,object文件夹中就出现了相关的blob。
我们把暂存区的文件进行提交,看看会发生什么情况
在object目录下多了4个对象然后依次查看之后,发现是一个commit对象,在这个commit对象之下是一个tree对象(da开头),在这个tree对象之下,又是一个tree对象(fe开头,对应doc文件夹),在它之下是一个blob对象(4b开头),对应readme文件。所以,共有一个commit,2个tree,一个blob。
分离头指针的情况
如果你不小心操作了chekout commit对象。所谓的分离头指针,我们操作的时候,都是在一个分支上操作的,但是这个上没有任何分支,如果你进行了一系列的操作,然后又切换到master或者其他分支,那么这些没有分支依靠的操作,就会被当成垃圾处理掉的。
#30 注册GitHub账号
#31 配置公私钥
查看GitHub的help文档
                    
                
                
            
        
浙公网安备 33010602011771号