将git repo移动到第二台计算机?

mk.*_*mk. 54 git

我有一个简单的本地git仓库的项目,我想这个项目(文件夹等)移动到另一台计算机,并从现在开始工作.我不想在旧机器上留下任何东西(当然除了我的其他git项目).我希望它好像我一直在新机器上工作.

我可以简单地将所有文件移到该计算机上,还是键存在问题?我应该在两台机器上使用相同的密钥吗?如果只是移动所有文件夹无法完成,我该怎么办?我想避免设置和学习使用服务器的麻烦,因为这看起来很复杂,我不想改变我的工作流程.

man*_*lds 61

对于您的情况,最好的方法是将文件夹(copy,scp,cp,robocopy - 无论哪个)复制到新计算机并删除旧文件夹.

我完全不同意@Pablo Santa Cruz,克隆是你正在做的事情的范例.不它不是.您正在将回购移动到新计算机.

为什么我不喜欢克隆用于此目的:

  • 它为克隆的存储库中的每个分支创建远程跟踪分支.你正在移动,旧的回购已经不复存在了.
  • 任何远程分支和其他引用都被完全忽略.
  • 如果你有任何钩子,你就不会得到它们,你可能会忘记你拥有它们!
  • 你不能使用git reflog或其他方法获得"丢失"提交等.可能不是一个大问题,特别是如果repo充当服务器但需要注意的事情.

如果您搜索备份git repo的方法,git clone将不在最佳答案中.因此它不应该用于移动回购!我也觉得只是一个git clone不能成为正确的答案,因为git clone--mirror选项,它保留了回购,意味着git clone回购与git clone --mirror回购不同(除了裸露,差异主要是我上面提到的).我会做一个副本,因为我知道我用复制的回购获得了什么 - 同样的回购!

什么时候考虑git clone:

  1. 它更快,因为git在克隆时进行了一些优化
  2. 您可能在新计算机上有不同的git版本,而副本可能会使repo在其他版本中无法使用(现在不常见).但实际上这可能是另一个复制专家,因为这会告诉你新计算机有不同的git版本.

  • 其他人都这么复杂.获取整个项目目录并将其复制到新计算机.完成. (11认同)

Oli*_*ver 6

git bundle子命令旨在离线传输存储库。

在源计算机上,在 Git 工作区中执行以下命令:

$ git bundle create --progress myproject.bundle --all
Run Code Online (Sandbox Code Playgroud)

然后将创建的文件传输myproject.bundle到目标机器并执行以下命令:

$ git clone myproject.bundle myproject
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看bundle子命令的手册页