【问题标题】:one git bare repository used for many clone一个用于许多克隆的 git 裸存储库
【发布时间】:2017-08-26 06:02:38
【问题描述】:

是否可以使用同一个 git 裸存储库来保存不同存储库的数据?换句话说,我可以:

创建一个 git 裸仓库(称为 BARE REPO)

使用来自远程仓库 A 的主分支数据克隆它

  • git clone -b consolidate --single-branch git@444.444.44.44:ConsolidateService.git
  • 执行 git add .
  • 触摸 README.md
  • exec git commit -m "add README"
  • exec git remote add consolidate ssh://root@333.333.33.33/var/repos/app.makeatoy.git
  • exec git push consolidate master

擦除 BARE REPO 的内容

使用来自远程仓库 B 的主分支数据重新克隆它

  • git clone -b test --single-branch git@444.444.44.44:TestService.git
  • 执行 git add .
  • 触摸 README.md
  • exec git commit -m "add README"
  • exec git 远程添加测试 ssh://root@333.333.33.33/var/repos/app.makeatoy.git
  • exec git push 测试大师

清除 BARE REPO 的内容

使用来自远程仓库 C 的主分支数据重新克隆它

  • git clone -b prod --single-branch git@444.444.44.44:ProdService.git
  • 执行 git add .
  • 触摸 README.md
  • exec git commit -m "add README"
  • 执行 git 远程添加生产 ssh://root@333.333.33.33/var/repos/app.makeatoy.git
  • exec git push 生产大师

如果可能,如何删除裸存储库的内容?

TIA

【问题讨论】:

  • 在裸存储库中,想通过 1) 获取存储库的名称和 2) 获取使用的分支的名称来使用 post-receive 挂钩。然后,想法是生成一个地方来部署 Web 代码。例如:对于存储库 app1 / branch : test,代码将部署到目录 app1-test。对于存储库 app1 / 分支 prod,代码将部署到目录 app1-prod 等。

标签: git branch tagging


【解决方案1】:

创建一个裸仓库并添加来自不同项目的遥控器。对于 git,它只是不相关的分支。从每个获取后无需删除任何内容(裸仓库上没有工作树,因此没有可删除的内容。)。

【讨论】:

  • 感谢您的回复 :-) 那么,当您将数据推送到裸存储库时,它会去哪里呢?操作完成后是否将某些内容推送到 /dev/null ?
  • 它进入了回购。但是在一个裸仓库中,没有什么可以删除的。它就像一个数据库。没有“最终用户文件”供您添加/修改/提交/删除等。
  • 我们很清楚:当然......在一个裸仓库里有信息。但是,如果您将某些内容推入其中,然后删除其中的所有内容(git 用来保存 repo 元数据的所有文件,例如对象和引用、配置文件等),那么您最终会得到......好吧,什么都没有。如果需要,您可以再次 init --bare 它。它只是一个空目录。
  • 再次感谢您的回复。所以 - 当我将数据(来自存储库 Alpha)推送到裸存储库的主分支时,数据会保留在那里。如果 - 稍后,我将数据(源自 Repository Beta) - 推送到同一个裸存储库的主分支中,那么会发生什么:-|
  • 如果您尝试推送到 repo 的分支具有相同的名称,则该分支将开始指向新分支。另一个项目的分支的信息将保留在 repo 中(至少在很长一段时间内,直到有一些 git-gc 运行摆脱它)。将两个项目保留在同一个 repo 上并不是最好的办法,但是如果您想在同一个 repo 上保留两个项目中名为“master”的分支,您应该在名称中使用前缀,这样它们就不会踩到彼此的脚趾:projectA/master,projectB/master。这是可能的。混乱,但在技术上是可行的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
相关资源
最近更新 更多