将 git 存储库复制到离线机器并通过记忆棒 pushing/pulling
Copy git repository to offline machine and pushing/pulling via memory-stick
我需要在无法访问我的存储库的离线计算机上工作。现在我也不想错过完全使用 Git。
问题:
- 通过记忆棒将我的存储库复制到离线机器上的最佳方法是什么?
- 有没有办法通过文件系统复制补丁?
编辑:我应该声明,我必须将记忆棒交给管理员,他会为我进行复制,也就是说,我不能用我的用户安装记忆棒。
要将您的存储库复制到记忆棒,只需使用 git clone
,然后使用 git pull
更新它。
例如,在安装了记忆棒的在线计算机上,执行
cd <memory-stick-mount-point>
git clone <local-path-to-git-repo>
现在 <local-path-to-git-repo>
将成为您 U 盘上 repo 的 origin
遥控器,所以稍后您可以
只需使用 git push/pull
(安装在在线计算机上时)即可同步您的离线工作。
记忆棒上的 git 存储库是独立的,因此现在您可以在任何计算机上对其进行操作,然后在将其安装到在线计算机上时按上述方式同步。
编辑,回复:不允许自己安装棒子:
如果你可以让管理员git clone
将回购到记忆棒上就可以了。否则,你的管理员可以简单地复制整个 project.git 目录(如果它是一个裸仓库)或 project/.git (否则)到你的记忆棒,你可以反对那个,值得关注的事情出的是遥控器等将是在线机器的遥控器。
然后,拉动不是问题,但如果您不相信您的 sysadm 会为您解决合并冲突,则推动可能需要进一步的解决方法。
如果您有自己的分支机构,那么合并不是问题。
除此以外
要进行合并 "offline",您可以拥有 两个 个存储库的离线副本,一个是您处理的,另一个是您的 "origin",当您得到返回,让 sysadm git 拉到 "origin" 仓库,然后在离线计算机上,在两个记忆棒仓库之间进行合并,然后让 sysadm 合并你的原始仓库进入线上。
虽然这感觉有点脆弱并且对竞争条件开放,所以我真的会尝试在 "going offline" 之前创建单独的分支。
要复制完整的 Git 存储库,您只需复制文件夹 .git
;它包含了一切。 Git 使用安全的文件名并忽略回购协议内的时间戳,因此该数据对于常见的文件系统怪癖是安全的。
在目标机器上,新建一个文件夹,复制里面的.git
文件夹。现在 git checkout <branch>
会给你一份工作副本。
如果您想来回移动补丁而不是整个存储库,那么 git format-patch <branch>
会创建它们。该命令将创建更新远程仓库所需的所有补丁(即输出将包含尚未推送的所有内容)。您还可以为其提供提交 ID(= 从该提交开始)或范围。
要应用它们,请在远程仓库上使用 git am < 0001....
。
相关:
命令git bundle
就是为此设计的。例如离线克隆仓库的master分支,
cd my-repository
git bundle create offline-repos master
这会将整个 master
分支存储在名为 offline-repos
的文件中。将文件复制到另一台计算机。在该计算机上,键入
git clone -b master offline-repos new-repos
这将创建从 offline-repos
检出的文件夹 new-repos
。您从中克隆的捆绑文件将被视为远程存储库。您甚至可以创建一个包来存储自引用以来的更改,如:
git bundle create offline-repos e45ad329..master
如果您用包含新更改的包替换包文件 offline-repos
,您可以从中 git pull
,如:
cd new-repos
git pull
我需要在无法访问我的存储库的离线计算机上工作。现在我也不想错过完全使用 Git。
问题:
- 通过记忆棒将我的存储库复制到离线机器上的最佳方法是什么?
- 有没有办法通过文件系统复制补丁?
编辑:我应该声明,我必须将记忆棒交给管理员,他会为我进行复制,也就是说,我不能用我的用户安装记忆棒。
要将您的存储库复制到记忆棒,只需使用 git clone
,然后使用 git pull
更新它。
例如,在安装了记忆棒的在线计算机上,执行
cd <memory-stick-mount-point>
git clone <local-path-to-git-repo>
现在 <local-path-to-git-repo>
将成为您 U 盘上 repo 的 origin
遥控器,所以稍后您可以
只需使用 git push/pull
(安装在在线计算机上时)即可同步您的离线工作。
记忆棒上的 git 存储库是独立的,因此现在您可以在任何计算机上对其进行操作,然后在将其安装到在线计算机上时按上述方式同步。
编辑,回复:不允许自己安装棒子:
如果你可以让管理员git clone
将回购到记忆棒上就可以了。否则,你的管理员可以简单地复制整个 project.git 目录(如果它是一个裸仓库)或 project/.git (否则)到你的记忆棒,你可以反对那个,值得关注的事情出的是遥控器等将是在线机器的遥控器。
然后,拉动不是问题,但如果您不相信您的 sysadm 会为您解决合并冲突,则推动可能需要进一步的解决方法。 如果您有自己的分支机构,那么合并不是问题。 除此以外 要进行合并 "offline",您可以拥有 两个 个存储库的离线副本,一个是您处理的,另一个是您的 "origin",当您得到返回,让 sysadm git 拉到 "origin" 仓库,然后在离线计算机上,在两个记忆棒仓库之间进行合并,然后让 sysadm 合并你的原始仓库进入线上。
虽然这感觉有点脆弱并且对竞争条件开放,所以我真的会尝试在 "going offline" 之前创建单独的分支。
要复制完整的 Git 存储库,您只需复制文件夹 .git
;它包含了一切。 Git 使用安全的文件名并忽略回购协议内的时间戳,因此该数据对于常见的文件系统怪癖是安全的。
在目标机器上,新建一个文件夹,复制里面的.git
文件夹。现在 git checkout <branch>
会给你一份工作副本。
如果您想来回移动补丁而不是整个存储库,那么 git format-patch <branch>
会创建它们。该命令将创建更新远程仓库所需的所有补丁(即输出将包含尚未推送的所有内容)。您还可以为其提供提交 ID(= 从该提交开始)或范围。
要应用它们,请在远程仓库上使用 git am < 0001....
。
相关:
命令git bundle
就是为此设计的。例如离线克隆仓库的master分支,
cd my-repository
git bundle create offline-repos master
这会将整个 master
分支存储在名为 offline-repos
的文件中。将文件复制到另一台计算机。在该计算机上,键入
git clone -b master offline-repos new-repos
这将创建从 offline-repos
检出的文件夹 new-repos
。您从中克隆的捆绑文件将被视为远程存储库。您甚至可以创建一个包来存储自引用以来的更改,如:
git bundle create offline-repos e45ad329..master
如果您用包含新更改的包替换包文件 offline-repos
,您可以从中 git pull
,如:
cd new-repos
git pull