我刚开始使用Git,我有一个问题:
当我创建一个新存储库时,我会得到一个文件夹,我应该在其中放置所有文件(该文件夹包含.git
文件夹)。这个文件夹是完全独立的吗?
假设我创建了一个新的存储库并在该项目上工作了一段时间(进行提交)。如果我将那个文件夹移动到另一个位置(比如另一个磁盘)它仍然可以工作吗?如果我把它移到另一台电脑上怎么办?我可以在外部设备(外部 HDD 或 USB 记忆棒)上拥有存储库/文件夹并在多台计算机上使用它吗?
我刚开始使用Git,我有一个问题:
当我创建一个新存储库时,我会得到一个文件夹,我应该在其中放置所有文件(该文件夹包含.git
文件夹)。这个文件夹是完全独立的吗?
假设我创建了一个新的存储库并在该项目上工作了一段时间(进行提交)。如果我将那个文件夹移动到另一个位置(比如另一个磁盘)它仍然可以工作吗?如果我把它移到另一台电脑上怎么办?我可以在外部设备(外部 HDD 或 USB 记忆棒)上拥有存储库/文件夹并在多台计算机上使用它吗?
是的。那是本地存储库,它包含有关存储库的所有信息。
唯一不包括在内的是全局配置。
有关更多详细信息,请参阅此免费 Git 文档。从那里引用:
Git 创建 .git 目录,该目录几乎是 Git 存储和操作的所有内容所在的位置。如果您想备份或克隆您的存储库,将这个单一目录复制到其他地方几乎可以满足您的一切需求。
文件夹本身是独立的。
实际上,如果您已经提交了所有内容并且没有本地更改,那么.git
文件夹本身就足够了。该.git
文件夹是您的存储库。该文件夹的其余内容是签出的工作目录。您不能将这些(特别是如果有很多文件)复制到其他机器上。
是的,它包含了 git 需要的一切。
它确实适用于 USB 棒。
是的,该文件夹是自包含的,但是如果您想从另一台机器上对其进行 git 操作,则需要安装 git
几乎。
push
orclone
或 a复制bundle
),即使它们存储在.git
文件夹中。.git
目录的重复),在本地机器上工作的钩子可能无法在另一台机器上工作(例如,因为它是一个perl
脚本,并且perl
没有安装在另一台机器上)。Git 会将移动的 repo 识别为 git repo,因此您可以说它在这方面是自包含的。
我更喜欢将我的 repo 移动为一个git bundle
(只移动一个文件)。
但是,如果您依赖任何其他(脚本/工具/其他存储库)来完成您的存储库并且实际上允许您使用它,那么您可能还需要考虑移动其他外部元素。
Git 文件夹可能包含在内,但并不总是如此。
例如,今天我努力尝试将恢复的 .git 文件夹和文件复制到新的 Virtual Box 系统,因为存储在 Virtual Box/Lubuntu 内部的外部 USB 驱动器上的 repo 的硬盘损坏在正确关闭之前意外断开(使用 chkdsk / 修复f /x) 。
据我所知,所有文件看起来都完好无损,并且 git log 看起来很正常,除了标题是红色的。但是所有推送到新创建的远程仓库的尝试都遇到了各种错误,例如各种提交 # 的“无法遍历父级”和“你确定你有权限吗?” 此外,当文件最初从我恢复的驱动器复制到新创建的 VM 时,还有一些关于“符号链接”的消息。我认为这可能是权限问题,但所有文件都是读/写的。也许 .git 有内部检查?最终结果我只是通过删除 .git 并初始化本地存储库(基本上是硬重置)成功地推送到远程......所有历史记录都丢失了(只是一个类项目,所以之前只是本地的,现在 Bitbucket 将防止我希望再次发生。
但我想。