Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git文件夹是独立的吗?_Git_Repository - Fatal编程技术网

git文件夹是独立的吗?

git文件夹是独立的吗?,git,repository,Git,Repository,我刚刚开始使用Git,我有一个问题: 当我创建一个新的存储库时,我会得到一个文件夹,我应该将所有文件都放在其中(这个文件夹包含.git文件夹)。这个文件夹是完全独立的吗 假设我创建了一个新的存储库,并在项目上工作了一段时间(执行提交)。如果我把那个文件夹移到另一个位置(比如说另一张磁盘),它还能工作吗?如果我把它移到另一台计算机上怎么办?我是否可以将存储库/文件夹放在外部设备(外部HDD或U盘)上,并在多台计算机上使用它?是的,它包含git需要的所有内容 而且它可以与usb记忆棒一起使用。是的,

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

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


假设我创建了一个新的存储库,并在项目上工作了一段时间(执行提交)。如果我把那个文件夹移到另一个位置(比如说另一张磁盘),它还能工作吗?如果我把它移到另一台计算机上怎么办?我是否可以将存储库/文件夹放在外部设备(外部HDD或U盘)上,并在多台计算机上使用它?

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


而且它可以与usb记忆棒一起使用。

是的,文件夹是独立的,但是如果您想从其他机器上对其执行git操作,则确实需要安装git

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

唯一没有包括的是全局配置

有关更多详细信息,请参阅。从那里引述:

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


文件夹本身是独立的

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

几乎

  • 已经是全局配置
  • 挂钩出于明显的安全原因,不属于回购的一部分(它们不会通过
    推送
    克隆
    捆绑
    进行复制),即使它们存储在
    .git
    文件夹中。
    在您的情况下(复制
    .git
    目录),在本地机器上工作的钩子可能无法在另一台机器上工作(例如,因为它是
    perl
    脚本,而
    perl
    未安装在另一台机器上)
  • 参考外部回购协议(在另一台机器上复制git回购协议后可能无法访问)
  • 只能引用存储在一台计算机上的脚本,而不能在另一台计算机上访问
  • git远程地址(存储在本地配置中)可以引用在您将repo复制到其他位置后不再可访问的repo
Git会将移动的回购确认为Git回购,因此您可以说它在这方面是独立的。
我更喜欢将我的回购协议移动为(只移动一个文件)


但是如果你依赖任何其他的(脚本/工具/其他版本)来完成你的回购,并且实际上允许你使用它,你也可能需要考虑移动其他外部元素。

Git文件夹可以包含但不总是像它一样。

例如,今天我试图将恢复的.git文件夹和文件复制到一个新的虚拟盒系统,因为虚拟盒/Lubuntu内部的外部usb驱动器上存储的repo的硬盘驱动器损坏在正常关机之前意外断开连接(用chkdsk/f/x修复)

据我所知,所有文件似乎都完好无损,git日志看起来正常,只有标题是红色的。但是,所有推送到新创建的远程repo的尝试都遇到了各种错误,例如各种提交的“无法遍历父项”和“您确定您有权限吗?”此外,当文件最初从恢复的驱动器复制到远程repo时,也有一些关于“符号链接”的消息 新创建的虚拟机。我想这可能是权限问题,但所有文件都是读/写的。也许吧,git有内部检查吗?最终结果我只通过删除.git并初始化本地repo(基本上是硬重置)成功推送到远程。所有历史记录都丢失了(只是一个类项目,所以之前只是本地的,现在我希望Bitbucket可以防止再次发生。

但我认为.git文件夹是独立的。

一个配置设置需要特别考虑:远程URL。您可以使用类似
git@localhost:foobar.git
,这显然无法在其他计算机上运行。是的,但是无论URL是什么,整个远程存储库都可能无法访问(原始计算机仍保留在防火墙后面)。答案仍然有效:此存储库是自包含的,包含所有数据;从其他位置可以访问或无法访问配置的远程设备等外部内容。类似地,其他配置可能会引用特定于本地计算机的文件,如全局
~/.gitignore
、自定义
diff
工具等。您的working文件和文件夹与
.git
文件夹并排运行。
.git
文件夹本身包含您提交的所有数据、日志、状态等。如果您有
--bare
存储库,则它仅用于存储,没有工作文件。bare repo通常是
远程的。