Git泄露总结

Git泄露总结,第1张

Git泄露
  • 泛域名是什么
  • 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地址上去。


比如存在泛域名*.a.com且a.com对应的IP为135.125.12.135,则比如b.a.comm.a.comm3.b.a.com之类的都会被解析到a.com对应的IP地址中去。


*表示通配,只要在a.com之前,任何字符都可以。


Git是什么

git是一个分布式版本控制工具

为什么需要版本控制工具

其实这也可以回答Git为什么二寸的原因。


如果多人同时开发一个项目,而每个人只负责项目中的一小部分,最后需要把每个人负责的内容整合到一起,但一个一个复制粘贴过于繁琐,这时候就可以使用git,将各自负责的项目上传上去,git会自动进行整合。


所谓版本控制,就是有时候,我们初始的项目,离我们最终的产品之间肯定需要经过好几个版本的修改,但有时候如果你修改了其中的某一处,这个代码突然就跑不了了。


然后你也忘了没改之前是什么样子的了。


但如果把他上传到git上面,他可以进行版本回滚,就你发现改了之后不能跑了,可以版本回滚到修改之前的状态。


怎么创建一个Git仓库 初始化一个仓库 git init

然后就会发现系统中出现了一个.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 branch

可以查看所有分支

git checkout 分支名字

这个指令可以切换分支

git merge 分支名字

可以用来合并分支变更,而不是合并分支内容

Git对象

在Git系统中有四种类型的对象,所有的Git *** 作都是基于这四种类型的对象。


commit

指向一个"tree",它用来标记项目某一个特定时间点的状态。


包括以下关于时间点的元数据,如时间戳、最近一次提交的作者等

blob

用来保存文件的主要内容。


tree

它主要相当于一个对象关系树,它管理一些"tree"和“blob”对象。


tag

给某个提交增添一个标记。


.git目录

在我们使用git init初始化git仓库的时候,会生成一个.git的隐藏目录,git会将所有的文件,目录,提交等转化为git对象,存储在这个文件夹当中。


文件夹名称作用
COMMIT_EDITMSG保存最新的commit message,Git系统不会用到这个文件,只是给用户一个参考
configGIt仓库的配置文件
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_HEADHEAD指针的前一个状态
Git泄露的原理

Git泄露的原理,就是因为没有删除,git文件夹,因为他是隐藏文件,可能会有一些开发人员忘记删除

git泄露利用工具–GitHack

我们常用的.git泄漏文件恢复工具有很多,但是如果不懂原理,可能会遇到恢复文件缺少的问题,因为多数工具只会恢复HEAD指针的commit对象。


常用的Git泄露利用工具,比如GitHack,他的使用方式也是特别简单,就是py文件名加上要下载的.git的文件链接地址即可

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/606979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存