我为我的工作做了一堆数据分析。分配这需要我执行可能需要数小时的代码。当代码仍在执行时,我希望能够分支代码并进一步开发代码。我可能也想要并行执行轻微的不同分支。这个问题是它基本上要求我将分支的代码复制到一个新目录,这样我的更改不会影响母分支的执行,或者不会覆盖并行运行的不同分支的输出文件。显然,没有任何版本控制,处理所有这些版本及其更改是一件痛苦的事。
最近我开始使用git,它很适合我,直到遇到如上所述的情况。我没有太多使用外部存储库(拉/推)的经验,但我怀疑这可以使用本地外部存储库来解决。 你会如何处理这种情况?
答案 0 :(得分:3)
只需克隆你的回购。然后,您可以在主仓库和克隆之间进行推拉。请查看git clone
,git push
和git pull
。
答案 1 :(得分:2)
有两个选项:您可以拥有一个本地“主”存储库,然后使用该主存储库作为其远程设置一堆卫星“客户端”存储库,或者您可以简单地将一堆本地存储库全部指向在真正的遥控器上。
我确定你知道怎么做后者(来自不同目录的一堆git clone
),这里是设置前者的说明:
克隆遥控器。这将是您的聚合点或“主”存储库。最好让它裸露(没有工作树)以避免混淆:
git clone --bare ssh://user@host/path/to/repo.git repo.git
然后将多个客户端设置为该客户端:
git clone file:///path/to/local/repo.git
每个人都可以在自己的分支上做自己的事情。当您对其中一个客户端进行更改时,请执行git push
以推送到聚合点,然后从聚合点执行git push
到服务器。从其他客户端,您需要执行git fetch
来提取您从其他客户推送的新更改。
答案 2 :(得分:1)
我会设置构建过程以将二进制文件复制到源文件夹之外的单独位置,并设置环境以便输出文件也写入单独的位置。保持源树不受生成的数据的影响。
答案 3 :(得分:0)
您需要在单独的文件夹中执行。
git archive | tar
或类似的东西。然后,您可以继续在您的仓库中继续工作。
克隆不是一个好主意,因为你将分散在你的reflog和rerere历史中。如果需要,可以将符号链接返回到特定文件的存储库。
希望这有帮助