一次维护多个存储库

时间:2019-11-12 15:01:45

标签: git github

我想创建多个使用相同主题的Gatsby网站。但是维护它们很困难,因为如果我在一个存储库中更新了npm软件包,那么它将不会在其他存储库中更新。因此,我必须分别更新所有它们。有没有办法一次更新所有存储库中的软件包?

  1. /src/pages/posts
  2. /gatsby-config.js

在所有存储库中,只需更改这两个文件即可。

2 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!

也许Git并不是最佳解决方案,我建议您使用bash / Powershell脚本在所有站点上触发npm更新。但是,如果您真的想使用Git进行操作,则可以在下面找到一个选择。

第0步::将您要用作站点的站点克隆为本地计算机中所有其他站点的基础

步骤1::在本地计算机上创建所需的Git遥控器。这是您需要推送和拉取**的不同站点的URL /指针**

# Syntax - git remote add <remote_name> <remote_url>
> git remote add site1 https://github.com/user/repo1.git
> git remote add site2 https://github.com/user/repo2.git

步骤2:将您不想跨站点更改的文件/文件夹添加到.gitignore文件中

> cat .gitignore

/src/pages/posts
/gatsby-config.js

**步骤3:现在,每次对这些软件包进行更改时,都可以使用以下命令将其推送到所有remotes master分支

git remote | xargs -L1 -I R git push R master

注意:使用此解决方案,当您将更新拉到其他站点时,需要修改.gitignore文件,以删除所做的输入。否则,您的网站也将开始忽略这些文件夹。 第三步参考:https://stackoverflow.com/a/18674313/10783334

答案 1 :(得分:0)

假设所有站点都位于一个文件夹中,则可以将以下代码复制到Powershell脚本中,例如“ ScriptUpdateNpm.ps1”,然后在根文件夹中运行它。

文件夹结构

 - GatbsySites
  - Site1
  - Site2
  - Site3
  - ScriptUpdateNpm.ps1
$Script:Modules = @(
    'Package1',
    'Package2'
)

$folders = Get-ChildItem -Attributes Directory
$rootFolder = Get-Location

foreach ($folder in $folders) {
    Set-Location $folder 
    npm update $Script:Modules
    Set-Location $rootFolder
}