首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >镜像git非裸存储库

镜像git非裸存储库
EN

Stack Overflow用户
提问于 2017-09-25 16:15:36
回答 2查看 449关注 0票数 0

我需要一个“机器人用户”,它可以通过一些脚本与git裸远程存储库进行交互。这种裸露的回购被称为中央回购。

A这一次,这个机器人用户有自己的本地存储库,而不是裸存储库(他必须签出分支,合并分支,.)。但是每天晚上,当他醒来工作时,他需要在当地有一个完美的中央回购的镜子(除了主人之外,每一个分支都可以进化,一些新的分支可以被创造出来,.)。

做这件事的最好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-25 20:38:23

不幸的是,这并不像前面的答案那样简单,因为git pull只将更改合并到当前分支中。

您的机器人需要做的第一件事是git fetch -虽然git pull (默认情况下)确实会导致这种情况发生,但我建议直接执行fetch以避免潜在的混乱副作用。

当您执行fetch时,您得到的信息取决于remote.central.fetch配置选项(对于您所指出的远程命名的central )。clone之后的默认设置(假设您没有为clone命令指定像mirrorsingle-branchdepth这样的不带no-single-branch的东西.)将获取所有分支的历史记录,并更新远程分支参考(例如,refs/origin/central/master以指示master分支在central上的状态)。

如果你坚持这样做,那么你的本地裁判仍然与遥控器不同步。这是否是个问题取决于你的机器人在做什么。这里有很多排列..。您的机器人可能在fetch之前进行了本地更改,如果是的话,您想对它们做些什么?您的机器人会在fetch之后进行更改吗?最终它会推动这些更改吗?再加上任何数量的“如果你希望历史看起来像X,做Y”的考虑。

我要说的是,如果您的目的是移动所有本地分支以反映central上相应的分支,那么有两种基本方法:

1)将refspec保留在默认设置中,然后遍历更新本地引用的分支,以与远程匹配。这为您提供了处理任何本地更改的机会(方法是合并或将它们重新定位到分支历史中),但这需要相当多的脚本。

2)改变萤火虫规格,使其看起来像照镜子的克隆人。(我觉得这就是你的意思,你是如何表达这个问题的。)这可能是有风险的,因为本地更改可能只会受到打击,而且您仍然需要识别在central上删除的任何分支。这里的设置应该是这样的

代码语言:javascript
复制
git config remote.central.fetch +refs/*:refs/*
票数 1
EN

Stack Overflow用户

发布于 2017-09-25 17:34:50

这很简单(如果说完美镜像,你指的是all branches, but not other refs)。

在没有--bare的情况下克隆裸露的回购结果是正常的回购。在做了一次之后,你的机器人只需要

代码语言:javascript
复制
git pull

当他开始工作的时候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46409739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档