Git在哪里存储文件?


76

我刚刚在Ruby on Rails项目上运行了以下命令:

git init
git add .
git commit -a -m 'Initial'

Git实际在哪里存储此存储库?(在我的本地计算机上,但是在哪里?)


2
顺便说一句,git commit -a -m'initial'与git commit -am'initial'
math2001

Answers:


100

它将.git在当前目录的文件夹中创建您的存储库。


嗨,我有同样的问题。在git可以完成克隆之前,我的磁盘空间不足,现在我不知道在哪里删除旧克隆。运行GIT时我在〜目录中,但是〜或/中没有.git文件夹。我该怎么办?谢谢。
福泽由纪夫(Yukio Fukuzawa)2013年

1
我不知道为什么没有.git目录。您ls -ld .git在〜时尝试过吗?
马修·弗拉申

嗨,谢谢您的回答。我仍然没有找到克隆,但是第二个git成功了,.git文件夹存储在~/common/.gitcommon是包的名称)中。我认为GIT会将未完成的作业存储在temp文件夹中,一旦成功,它将转移回当前目录。我只是希望它删除了失败的下载。
福泽由纪夫(Yukio Fukuzawa)2013年

11
值得一提的是,这是一个隐藏目录,以防万一有人看不到它。
BK 2014年

1
@BK指出这一点,影响Windows,该文件夹处于隐藏状态。如此一来,每个人都知道他们如何看到它(Windows 7):F10->工具->文件夹选项->视图->显示隐藏的文件和文件夹(在高级设置的单选按钮中)
RebelFist

32

为了更完整一点,Git使用:

  • 工作树(它的根是在那里你犯了一个git init
  • Git存储库的路径”(其中有一个.git,将存储您所有文件的修订版)

GIT_DIR 是环境变量,可以是当前工作目录的绝对路径或相对路径。

如果未定义,则默认情况下,“ git仓库的路径”位于工作树的根目录中(同样,您在那里创建git init)。

实际上,只要指定工作树路径和Git存储库路径,就可以从磁盘上的任何位置执行任何Git命令:

git command --git-dir=<path> --work-tree=<path>

但是,如果您在Git存储库的子目录之一(未指定GIT-DIR或工作树路径)中执行它们,则Git只会在当前目录和父目录中查找.git,直到找到为止,并假设它也是的根目录。您的工作树,并将其.git用作文件所有修订的唯一容器。

注意:.git在Windows(msysgit)中也隐藏。
您必须做一个dir /AH才能看到它。
git 2.9(2016年6月)允许配置


请注意,Git 2.18(2018年第二季度)通过重构内部全局数据结构以使其可以打开多个存储库,使用然后关闭它们,从而开始发展Git存储对象的过程。

参见Jonathan Nieder(提交4a7c05f1fea63e(2018年3月23日。 见提交bd27f50提交ec7283e提交d2607fa提交a68377b提交e977fc7提交e35454f提交332295d提交2ba0bfd提交fbe33e2提交cf78ae4提交13068bf提交77f012e提交0b20903提交93d8d1e提交ca5e6d2提交cfc62fcartagnon
提交13313fc提交9a00580(2018年3月23日),作者:Stefan Beller(stefanbeller
(通过合并JUNIOÇ滨野- gitster-提交cf0b179 4月11日2018)

repository:介绍原始对象存储字段

原始对象存储字段将包含访问给定存储库中的对象所需的任何对象。

此修补程序引入了原始对象存储objectdir,并使用来填充原始对象 ,该存储曾经是存储库结构的一部分。

随着该结构获得成员,我们还将填充函数以清除这些成员的内存。

在后续步骤中,我们将引入struct object_parser,将补充存储库结构中的对象解析:

  • 原始对象解析器是用于提供对原始对象内容的访问的层,
  • 而更高级别的对象解析器代码将解析原始对象,并使用' struct object'跟踪父母身份和其他对象关系。

    目前,仅将较低级别添加到存储库结构。


当然可以,但是代码文件的版本在哪里?如果我交换分支,git如何获取该分支信息?似乎在这里这里都是更完整的答案(也许比OP更准确地回答“ git在哪里存储更改”)。不过,不确定是否值得编辑。
鲁芬2012年

@ruffin:很好的链接,但是正如您所注意到的,这不完全是OP的问题。
VonC 2012年

18

如果您使用的是英文Windows计算机,则Git的默认存储路径将为C:\Documents and Settings\< current_user>\,因为在Windows上,默认的Git本地设置位于,C:\Documents and Settings\< current_user>\.git因此Git会为每个repo/cloneat创建一个单独的文件夹,C:\Documents and Settings\< current_user>\并且存在克隆项目的所有目录。

例如,如果您使用以下命令安装Symfony 2:

git clone git://github.com/symfony/symfony.git

Symfony目录和文件将位于

C:\Documents and Settings\< current_user>\symfony\

2
您正在谈论HOMEgit bash的目录。如果更改目录,则克隆的存储库当然会在您git clone从其调用的目录中创建。真正回答这个问题的原因是git将文件存储.git在存储库中一个称为文件夹的文件夹中,无论您选择克隆它到哪里。
Shahbaz 2013年

1
开启Windows 8.1C:\Users\user_name\.project_name或致电Run ...\.project_name
做Nhu Vy 2015年

8

在项目的根目录中,有一个.git包含配置,存储库等的隐藏目录。


4
隐藏目录很有意义。这就是我所怀疑的,但在Terminal中看不到。显然,运行ls还不够。您也必须ls -a查看隐藏文件。
Yuval Karmi 2010年

2
没错 并且隐藏被简单地定义为“以开始”。
马修·弗拉申

1
隐藏“ dotfiles”可能仅对熟悉基于* nix的系统的人显而易见,但是可以。
布伦顿·阿尔克

4

我在Windows上,通过右键单击“开始”菜单中的Git Bash程序并选择“属性”来找到我的位置。快捷方式选项卡显示“开始于:”值。对我来说是%HOMEDRIVE%%HOMEPATH%,所以我打开了CMD提示符,然后键入echo %HOMEDRIVE%%HOMEPATH%以查看实际位置。


3

在项目根目录下的.git目录中。与其他一些版本控制系统(特别是CVS)不同,在任何子目录中都没有其他目录。


3

我也找不到我的git存储库。我正在使用Windows 8,并在下创建了我的存储库(错误)C:\Program Files (x86)\Git。我可以在bash中看到存储库文件夹,但在cmd或Windows资源管理器中看不到。

然后,我想起了Windows的“虚拟存储”功能。我的存储库文件夹实际上是在C:\Users\<username>\AppData\Local\VirtualStore\Program Files (x86)\Git\<myrepo>我的.git文件夹下创建的!


1
如何使其“正确”工作并将文件夹放置在所需位置?我遇到其他/类似的问题,但我认为它们都与虚拟商店有关。
2014年

在Windows Vista和更高版本上,不允许非管理员用户在中创建文件Program Files,该文件对所有用户都是通用的。Windows将改为在用户VirtualStore文件夹中创建文件。最简单的解决方案是避免在受限制的文件夹中创建文件,而是在中创建文件Documents
bouvierr 2015年

0

如果要查找项目文件夹的创建位置。我在输入git bash时注意到了。

$ git init projectName

它会告诉我,该项目的项目文件夹在哪里。


0

对我来说,当我运行git clone时,Git会将克隆的软件包存储在我从中运行命令的目录中。

-我用窗户。

例如

C:\Users\user>git clone https://github.com/broosaction/aria

将创建一个文件夹

 C:\Users\user\aria

-5

通常它会转到Windows中的Documents文件夹:C:\ Users \ <“用户帐户名称”>“> Documents \ GitHub


3
Github与它无关。
Arslan Ali

@shabbar,您正在回答以下问题:“ Windows的GitHub桌面在哪里建议作为创建新存储库的默认位置”。
尤里卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.