git文件夹是自包含的吗?

时间:2013-01-06 10:53:39

标签: git repository

我刚刚开始使用Git,我有一个问题:

当我创建一个新的存储库时,我得到一个文件夹,我应该在其中放置所有文件(此文件夹包含.git文件夹)。这个文件夹是完全独立的吗?

假设我已经创建了一个新的存储库,并在项目上工作了一段时间(做了提交)。如果我将该文件夹移动到另一个位置(比如另一个磁盘),它仍然可以工作吗?如果我把它移到另一台电脑怎么办?我可以在外部设备(外部硬盘或USB记忆棒)上安装存储库/文件夹,并在多台计算机上使用它吗?

6 个答案:

答案 0 :(得分:6)

是。这是本地存储库,它包含有关存储库的所有信息。

唯一不包括的是全局配置。

有关详细信息,请参阅this free Git documentation。引自那里:

  

Git创建.git目录,这是Git存储和操作的几乎所有内容所在的目录。如果要备份或克隆存储库,将该单个目录复制到其他位置几乎可以为您提供所需的一切。

答案 1 :(得分:2)

文件夹本身是独立的。

实际上,如果您已经提交了所有内容并且没有进行本地更改,那么.git文件夹本身就足够了。 .git文件夹是您的存储库。该文件夹的其余内容是签出的工作目录。您不能将这些(特别是如果有大量文件)复制到其他机器上。

答案 2 :(得分:1)

是的,它包含git需要的所有内容。

它确实适用于usb棒。

答案 3 :(得分:1)

是的,该文件夹是自包含的,但是如果要从其他计算机对其执行git操作,则需要安装git

答案 4 :(得分:1)

几乎。

  • Serge已经{{3>} 全局配置
  • 出于明显的安全原因,
  • 挂钩不属于回购(它们不会被pushclonebundle复制) ,即使它们存储在.git文件夹中 在您的情况下(.git目录的重复),工作本地计算机的挂钩可能不适用于另一个(例如,因为它是perl脚本,而perl不是没有安装在另一台机器上。
  • mentioned 引用外部存储库(一旦您通过其他计算机复​​制git存储库,可能无法访问)
  • submodules 可以引用仅存储在一台计算机上的脚本,而不能在另一台计算机上访问。
  • git远程地址(存储在本地配置中)可以在您将回购邮件复制到其他位置时引用回购不再可用。

Git会将移动的回购作为git回购承认,所以你可以说它在这方面是独立的。
我更喜欢将我的仓库移动为 git attributes (仅移动一个文件)。

但如果您依赖任何其他(脚本/工具/其他repos)来完成repo并实际允许您使用它,则可能需要考虑将其他外部元素移动为好。

答案 5 :(得分:0)

Git文件夹可能包含sel,但并不总是像它一样。

例如,今天我努力将恢复的.git文件夹和文件复制到新的Virtual Box系统后,存储在Virtual Box / Lubuntu内部外部usb驱动器上的repo硬盘损坏在正常关闭之前意外断开连接(修复)与chkdsk / f / x)。

据我所知,所有文件似乎都完好无损,git日志显示正常,但标题为红色。但所有推向新创建的远程仓库的尝试都遇到了各种错误,例如"无法遍历父母"对于各种提交#"你确定你有权限吗?"此外,还有一些关于"符号链接"的消息。当文件最初从我恢复的驱动器复制到 新创建的VM。我认为这可能是一个权限问题,但所有文件都是可读/写的。也许.git有内部检查?最终结果我只是通过删除.git并初始化本地仓库(基本上是硬重置)成功推送到远程...所有历史记录都丢失了(只是一个类项目所以事先是本地的,现在Bitbucket会防止再次发生我希望。
 但我认为.git文件夹是自包含的。