什么是.git文件夹?

nszi6y05  于 12个月前  发布在  Git
关注(0)|答案(7)|浏览(172)

什么是名为 .git 的文件夹?
它是在仓库中创建的,里面包含什么,为什么要创建它?

u5rb5r59

u5rb5r591#

文件夹 .gitgit init初始化。

  • .git* 包含版本控制所需的所有信息。如果你想克隆你的仓库,复制 .git 就足够了。

四个子目录:

  • hooks/:示例脚本
  • info/exclude文件,用于忽略的模式
  • objects/:所有“objects”
  • refs/:指向提交对象的指针

四个文件:

  • HEAD:当前分支
  • config:配置选项
  • 描述
  • 索引:集结地

这里的“对象”包括:

  • blob(文件)
  • 树(目录)
  • 提交(引用树、父提交等)
omtl5h9j

omtl5h9j2#

  • .git* 文件夹包含了项目在版本控制中所需的所有信息,以及关于提交、远程仓库地址等的所有信息。所有这些都在这个文件夹中。它还包含一个日志,存储了提交历史,以便您可以回滚到历史。

有关更多信息,您可以查看official website of Git

js4nwp54

js4nwp543#

这个解释应该可以帮助初学者理解 .git 文件夹。

  • .git* 文件夹有点像一顶魔术帽,你可以把你当前的魔术表演放进去。

当你创建一个新的Git仓库(git init)时,你组织成show格式的所有东西都放在这个魔法帽子里,你可以随时随地“拉出来”。
把所有东西都拿出来之后,你可以在看完这个节目之后把所有东西都扔掉(也就是说,除了.git文件夹之外的所有文件),你可以在以后的日子里把完全相同的节目拿出来。(因为每个新节目都只是帽子里内容的克隆。)
如果你只给某人发送.git文件夹,他们总是可以把你的项目文件拉到你放进去的同一个结构中(显示格式)。
git add告诉 .git 文件夹什么可以被拉出,例如,一只穿着燕尾服拿着手杖的兔子(或者你网站上的单个文件或整个菜单栏)。
git rm告诉 .git 文件夹停止允许从帽子中取出一些东西,例如,想象一下,如果你不再想让兔子成为你魔术表演的一部分。(重要的是要注意,你仍然可以恢复以前版本的节目,其中将包括兔子(你的1999年版本的博客与Comic Sans),如果你真的想,但是如果你使用git rm,你当前的节目将不包括兔子)。

e5nszbig

e5nszbig4#

这是使你的项目成为Git仓库的“东西”。.git 文件夹是当你执行git init(如果是一个新项目)或git clone(如果是从其他地方拉取一个项目)时创建的目录。没有 .git,你的项目是一个本地项目而不是Git项目,这意味着你不能执行任何git操作。
Git将项目的元数据和对象数据库存储在这个目录中,如下所示:
1.远程信息(项目连接到的远程服务器)
1.所有本地提交的历史记录
1.分支信息(当前项目状态(HEAD)指向哪个分支)
1.你曾经进行的所有本地提交的所有日志(包括恢复更改)
要了解更多信息,请查看Git主页上的官方文档:2.1 Git Basics - Getting a Git Repository

56lgkhnf

56lgkhnf5#

基本上,这意味着你的目录是由Git(Git仓库)处理的。
fatal:不是git仓库(或任何父目录):.git
每次你使用'git '命令。
您可以使用以下命令将
*.git**目录移动到其他位置:

git --git-dir=/myproject_path/myproject.git log --oneline

字符串
或者:

export GIT_DIR=/myproject_path/myproject.git


但我不建议这样做。注意,它只是一个文件夹,不像SVN
它保存了Git处理代码的所有相关信息,比如 HEAD 的位置,提交/推送之前/之后应用的钩子以及其他一些文件。
也许里面最“著名”的文件是配置文件,它保存了你所有的分支信息。
我建议阅读here更多信息。

eqzww0vc

eqzww0vc6#

从技术上讲,.git目录是Git仓库本身。仓库的所有内容,包括所有文件版本,标签,分支等,都分布在这个目录下的文件中。
.git外部的内容包括 * 工作目录 *,这是一个可选的适应性设置,可以让Git仓库更容易地工作。默认情况下,工作目录反映了本地仓库的最新提交,但您可以将工作目录树切换到仓库中的不同提交,并在进行新提交之前修改/创建/删除工作目录中的文件。
如果没有工作树,你仍然可以有一个 * 裸 * Git仓库-它只包含 * .git目录(在这个场景中通常命名为<something>.git),没有其他东西。除了在Git服务器上,它不常用。

ijnw1ujt

ijnw1ujt7#

  • .git* 文件夹的内部工作原理可以在这里找到,隐藏在Git官方文档的最后一章:
  • 10.1 Git内部构件-管道和瓷器 *

相关问题