- 泛域名是什么
- Git是什么
- 为什么需要版本控制工具
- 怎么创建一个Git仓库
- 初始化一个仓库
- git init
- git status
- git add 文件名
- git add .
- git commit -m <信息描述>
- git log
- git reset 文件名
- git reset commitID
- git reflog
- 文件状态
- untracked(未追踪的)
- unmodified
- modified(变更)
- staged
- branch(分支)
- git checkout -b
- git branch
- git checkout 分支名字
- git merge 分支名字
- Git对象
- commit
- blob
- tree
- tag
- .git目录
- Git泄露的原理
- git泄露利用工具--GitHack
所谓泛域名,就是将多个域名解析到同一个IP地址上去。
Git是什么比如存在泛域名
*.a.com
且a.com对应的IP为135.125.12.135,则比如b.a.com
、m.a.com
、m3.b.a.com
之类的都会被解析到a.com对应的IP地址中去。
*表示通配,只要在a.com之前,任何字符都可以。
git是一个分布式版本控制工具
为什么需要版本控制工具其实这也可以回答Git为什么二寸的原因。
如果多人同时开发一个项目,而每个人只负责项目中的一小部分,最后需要把每个人负责的内容整合到一起,但一个一个复制粘贴过于繁琐,这时候就可以使用git,将各自负责的项目上传上去,git会自动进行整合。
所谓版本控制,就是有时候,我们初始的项目,离我们最终的产品之间肯定需要经过好几个版本的修改,但有时候如果你修改了其中的某一处,这个代码突然就跑不了了。
然后你也忘了没改之前是什么样子的了。
但如果把他上传到git上面,他可以进行版本回滚,就你发现改了之后不能跑了,可以版本回滚到修改之前的状态。
然后就会发现系统中出现了一个.git的隐藏文件,这个文件十分重要,他所在的文件夹就是仓库,他会记录你所有的变更行为
git status查看当前仓库的状态信息。
就是查看这个仓库里现在有了多少个文件
git add 文件名就可以将文件暂时放入仓库的暂存区,注意这时还没有提交,只是在暂存区中
git add .将所有文件都放入暂存区中
git commit -m <信息描述>会将暂存区中的文件全部 提交,他只提交那些绿色的文件。
所谓信息描述就是描述一下你提交的这些文件,方便以后自己查找
git log查看日志,可以看到哪一个人在哪个时间提交了那一个文件,每一个commit都会生成一个哈希值,这个值是唯一的,相当于commit的身份z
git reset 文件名如果已经add了一个文件,但又发现add错了,想把它重新去除掉,可以使用这个命令,将绿色的文件重新变成红色的
git reset commitID根据commitID,可以将文件恢复到当时提交时的状态
git reflog可以查看近期所有的提交记录,这样就可以回滚到任意一个版本
文件状态文件一共有四种状态:
untracked(未追踪的)新建一个文件的时候,他是处于untracked的状态
unmodified如果将staged状态的文件commit进行提交,那么他就是unmodified状态
modified(变更)如果commit提交之后,在修改的话,那他的状态就是modified
staged当对一个新建文件使用add之后,这个文件便是staged状态
branch(分支)我们默认所见的master其实是一个分支的名字,是初始化git仓库时自动生成的默认分支,通常可以将master作为主分支,在我们需要切换版本时,要不停的reset,而且commitID还不好记,这个问题可以通过分支来解决
git checkout -b可以用来创建新得分支。
name—新分支的名字
template—以哪个分支或者以哪个commit为模板,如果第二个参数不填,则默认以当前分支为模板
可以查看所有分支
git checkout 分支名字这个指令可以切换分支
git merge 分支名字可以用来合并分支变更,而不是合并分支内容
Git对象在Git系统中有四种类型的对象,所有的Git *** 作都是基于这四种类型的对象。
指向一个"tree",它用来标记项目某一个特定时间点的状态。
包括以下关于时间点的元数据,如时间戳、最近一次提交的作者等
blob用来保存文件的主要内容。
它主要相当于一个对象关系树,它管理一些"tree"和“blob”对象。
给某个提交增添一个标记。
在我们使用git init初始化git仓库的时候,会生成一个.git的隐藏目录,git会将所有的文件,目录,提交等转化为git对象,存储在这个文件夹当中。
文件夹名称 | 作用 |
---|---|
COMMIT_EDITMSG | 保存最新的commit message,Git系统不会用到这个文件,只是给用户一个参考 |
config | GIt仓库的配置文件 |
description | 仓库的描述信息,主要给gitweb等git托管系统使用 |
HEAD | 包含一个分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent |
hooks | 存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他git托管系统会用到 |
hook scriptindex | 这个文件就是暂存区(stage),是一个二进制文件 |
info | 包含仓库的一些信息 |
logs | 保存所有更新的引用记录 |
objects | 所有的Git对象都会存放在这个目录中,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名 |
refs | 这个目录一般包括三个子文件夹,heads、remotes和tags,heads中的文件标识了项目中的各个分支指向的当前commit |
ORIG_HEAD | HEAD指针的前一个状态 |
Git泄露的原理,就是因为没有删除,git文件夹,因为他是隐藏文件,可能会有一些开发人员忘记删除
git泄露利用工具–GitHack我们常用的.git泄漏文件恢复工具有很多,但是如果不懂原理,可能会遇到恢复文件缺少的问题,因为多数工具只会恢复HEAD指针的commit对象。
常用的Git泄露利用工具,比如GitHack,他的使用方式也是特别简单,就是py文件名加上要下载的.git的文件链接地址即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)