我确信这可以做到,我只是不确定正确的方法。
我的方案是将USB驱动器,本地硬盘驱动器和网络驱动器都连接到我的PC。本地硬盘驱动器将包含本地工作的本地活动仓库。网络驱动器(具有长UNC路径!)将包含充当上游参考副本的主裸存储库(办公室中的2个或3个协作者),而USB驱动器充当我的移动拷贝到一些外部PC的sneakernet(我的其他合作者有自己的驱动器,这可能会影响答案)。 (这是在windows msysgit上)。
关注的是设置USB驱动器,并确保我正确地指导工作流程(参见using-git-on-usb-stick-for-travelling-code 。
答案 0 :(得分:8)
你可以从repo创建一个裸到裸的克隆,使用长的UNC路径到USB记忆棒
cd /e/src git clone --bare //server/path/to/your/network/repo.git
但是我怀疑它只是一步到位就能帮到你。
鉴于您将在当地的活跃仓库中工作,我会在USB记忆棒上创建一个裸仓库
cd git init --bare /e/src/myproject.git
在您当地的有效仓库中创建一个遥控器
git remote add usb file:///e/src/myproject.git
然后根据需要推送它。
git push usb philip/cool-new-feature
上述命令假设您的USB记忆棒是E:并且您的工作目录位于您当地的有效回购中。
据我了解您的问题,您至少有两个不相交的协作者,这取决于您的其他协作者是否共享他们自己的共同中央存储库,或者是否都在使用隔离的计算机。这意味着您的USB记忆棒上的存储库是每个人(最终)都可以访问的存储库,因此您的团队成员将大部分时间花在“飞机上”上。
设计开发过程的建议:
您可能采取的一种方法是让每个人都保持干净的主人并仅在其他分支上进行更改。物理拥有USB记忆棒是一种自然的集成令牌,因此当给定的合作者拥有它时,序列就会出现
git checkout master git pull usb master # should always be a fast-forward git merge feature1 make test # or whatever, and repeat until no breakage git commit git push usb master git push shared master # if appropriate git merge feature2 # if necessary ...
答案 1 :(得分:3)
我建议您创建主网络仓库的镜像克隆:
cd /path/to/usb/drive
git clone --mirror url://to/main/network/repo/project.git
镜像克隆是一个裸存储库,其中包含与原始存储库相同的分支,标记等。
不要担心传递--no-hardlinks
,因为无法在文件系统之间进行硬链接。
每当您想要更新USB镜像时,只需安装它并运行以下命令:
cd /path/to/usb/drive/project.git
git remote update -p
如果你曾经推入USB驱动器镜像,那么将这些提交到主网络仓库的最佳方法是通过本地硬盘驱动器回购:
# initial setup
cd /path/to/local/project
git remote add usb /path/to/usb/drive/project.git
# grab the commits from the usb drive
git remote update -p
# merge the usb drive commits into your local master branch
git merge usb/master
# push the result up to the main network repo
git push
答案 2 :(得分:0)
你可以从任何一个克隆。一旦USB驱动器完成,您可以将其删除。您可以使用
仔细检查完整性git fsck --full