Git可以将裸存储库克隆到另一个裸存储库

Phi*_*ley 5 git msysgit

我确信这可以做到,我只是不确定正确的方法.

我的方案是将USB驱动器,本地硬盘驱动器和网络驱动器都连接到我的PC.本地硬盘驱动器将包含本地工作的本地活动仓库.网络驱动器(具有长UNC路径!)将包含充当上游参考副本的主裸存储库(办公室中的2个或3个协作者),而USB驱动器充当我的移动拷贝到一些外部PC的sneakernet(我的其他合作者有自己的驱动器,这可能会影响答案).(这是在windows msysgit上).

正是关注USB驱动器的设置,并确保我将工作流指向正确的方向(请参阅使用-git-on-usb-stick-for-travel-code.

  • 我应该克隆我的本地仓库,还是克隆网络仓库?
  • 有哪些特殊标志可确保USB驱动器正确卸下?(-nohardlinks?)
  • 等等

Gre*_*con 8

您可以使用具有USB记忆棒的长UNC路径从repo创建一个裸到裸克隆

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记忆棒上的存储库是每个人(最终)都可以访问的存储库,因此您的团队成员将大部分时间花在"飞机上"上.

设计开发过程的建议:

  1. 避免您或其他人成为指定合并的情况.相反,您希望团队中的所有成员尽可能频繁地集成,以保持冲突变更的可能性小且易于管理.
  2. 拥有脱节的合作者会增加某人打破其他人依赖的功能的风险,无论是通过看似无害的更改还是错误地解决合并冲突.您应该使用快速的一键式方法来确定是否有任何回归或新错误进入您的代码.
  3. 每组协作者,那些更频繁访问彼此的存储库或共享存储库而不是USB存储库的人,应该在他们之间实现持续集成.当有来自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
...


Ada*_*ruk 0

您可以从任何一个克隆。USB 驱动器完成后,您可以将其移除。您可以在使用后仔细检查完整性

git fsck --full
Run Code Online (Sandbox Code Playgroud)