backup-git

中文文档
2.0.0发布于 2026/11/03UNLICENSEDCommonJS零依赖

Backup Git local por projeto, com confirmação do envio e diagnóstico de sincronização.

原始使用文档
文档目录8 节
  1. Usar e validar esta fonte
  2. Gerar o pacote instalável
  3. Instalação pelo npm após publicação
  4. Instalar localmente por tarball
  5. Continuar em outro computador
  6. Atualizar ou voltar de versão
  7. Comportamento do backup
  8. Testes

backup-git

Pacote npm para registrar alterações e confirmar seu envio ao remoto Git. A ferramenta é instalada no projeto e não depende dos comandos globais backup_git ou backup_git_5m.

Requisitos: Node.js 20 ou superior, npm, Git e autenticação no remoto em cada computador. Sem dependências npm externas. Versão inicial desta estrutura: 2.0.0, preservada do manifesto existente da v011.

Usar e validar esta fonte

Dentro de backup_git/v011:

npm ci
npm run backup:version
npm test
node backup-git.js --help

npm ci, instalação do pacote, ajuda e versão não executam backups. Não há scripts de instalação que iniciem processos ou alterem o shell.

Para executar em um repositório escolhido explicitamente:

node backup-git.js status --repo /caminho/do/projeto
node backup-git.js backup --repo /caminho/do/projeto

O backup inclui todo o repositório Git, incluindo pastas irmãs da pasta de execução e exclusões. Se executado nesta v011 sem --repo, trabalha no repositório pai backup_git, com todas as versões. O status consulta o remoto (precisa de rede), atualiza metadados de fetch e não cria commits nem altera arquivos de trabalho. synchronized só é verdadeiro com históricos iguais e sem alterações locais visíveis ao Git.

Gerar o pacote instalável

npm pack

Isso executa a checagem de sintaxe e os testes antes de gerar backup-git-2.0.0.tgz. O pacote contém apenas o executável, biblioteca, manifesto, README e changelog. O tarball não depende do checkout de origem depois de instalado.

Instalação pelo npm após publicação

Na pasta npm do projeto consumidor (por exemplo tools/modules/backup_git):

npm install --save-dev --save-exact [email protected]

Registre os scripts backup, backup:status e backup:version como no exemplo abaixo. Versione package.json e package-lock.json; nos outros computadores execute npm ci. Para atualizar, instale explicitamente a versão desejada com npm install --save-dev --save-exact backup-git@VERSAO. Consulte npm view backup-git version para ver a versão publicada. A instalação pelo registry estará disponível somente após publicação confirmada.

Instalar localmente por tarball

Exemplo partindo da raiz do projeto consumidor, com o tarball gerado acima:

mkdir -p tools/modules/backup_git/vendor
cp /caminho/backup_git/v011/backup-git-2.0.0.tgz tools/modules/backup_git/vendor/
cd tools/modules/backup_git
npm init -y
npm install --save-dev --save-exact ./vendor/backup-git-2.0.0.tgz
npm pkg set 'scripts.backup=backup-git'
npm pkg set 'scripts.backup:status=backup-git status'
npm pkg set 'scripts.backup:version=backup-git --version'

Crie também um .gitignore nessa pasta com:

node_modules/
!vendor/*.tgz

Versione package.json, package-lock.json, .gitignore e o tarball em vendor/. Mantenha o tarball: o lockfile aponta para ele. Não versione node_modules. Caso o projeto já tenha um módulo npm nessa pasta, preserve seu manifesto e acrescente somente a dependência e os scripts.

Para usar:

npm run backup:version
npm run backup:status
npm run backup

Também são disponibilizados os nomes backup_git e backup_github nos executáveis locais do npm. Não instale com sudo ou -g para este fluxo.

Continuar em outro computador

Depois de clonar/atualizar o projeto, entre em tools/modules/backup_git e execute npm ci. Os manifestos e o tarball versionados permitem reinstalar a mesma versão. Cada computador precisa ter sua identidade Git e acesso ao remoto configurados.

Este repositório guarda o pacote em uma subpasta (v011); npm install github:... na raiz do repositório não seleciona essa subpasta. A distribuição por tarball continua disponível; publicação npm é uma etapa explícita. Nenhuma release GitHub é criada pelo empacotamento.

Atualizar ou voltar de versão

Ao preparar uma atualização da ferramenta, altere a versão no package.json, sincronize o lockfile com npm install --package-lock-only e gere outro tarball com npm pack. Não é necessário criar outra pasta de versão do projeto.

No consumidor, copie o novo tarball para vendor/ e execute npm install --save-dev --save-exact ./vendor/backup-git-NOVA-VERSAO.tgz, substituindo NOVA-VERSAO pela versão real. Confira npm run backup:version, valide e versione os manifestos e o tarball. Para voltar, reinstale o tarball anterior, preservado em vendor/ ou no histórico Git. Não há atualização automática durante o backup.

Comportamento do backup

  1. Detecta a raiz, branch e upstream remoto já configurado. Recusa HEAD destacado, operações Git incompletas e conflitos no índice.
  2. Adquire um lock local nos metadados Git e recupera locks válidos de processos encerrados no mesmo computador.
  3. Confere arquivos considerados pelo Git. Arquivos de 100 MiB ou mais interrompem a operação: nada é ignorado silenciosamente e o .gitignore não é reescrito. Arquivos ignorados permanecem fora do backup.
  4. Registra arquivos novos, modificados e excluídos em commit local. Se a rede falhar depois disso, o commit fica preservado para reenvio.
  5. Consulta a branch remota. Se os dois computadores criaram commits diferentes, informa divergência e interrompe, preservando os históricos. A integração precisa ser resolvida antes de reenviar. Se apenas o remoto avançou, atualiza por fast-forward.
  6. Tenta enviar mesmo sem alterações novas e só informa sucesso após confirmar o hash no remoto. Não usa force push ou reset.

Saída 0 indica execução concluída; 1 indica erro. Em status, saída 0 significa consulta concluída; examine ahead, behind, changes e synchronized para saber se há pendências. Falha de rede/autenticação não equivale a backup online concluído.

Limitações: requer branch com commit inicial e upstream existente; não cria repositórios/remotos, não configura Git LFS, não resolve divergências e não instala agendamento. Hooks Git existentes continuam sendo executados pelo Git. Operações manuais de Git ou outras ferramentas não respeitam necessariamente o lock deste pacote. O limite de arquivos não substitui restrições próprias do servidor nem analisa todo o histórico antigo. Testado em Linux com Node.js 20 e remotos Git locais; não validado em Windows/macOS.

Testes

npm test usa o runner nativo do Node.js e repositórios temporários, com remotos bare locais. Cobre reenvio após rejeição, indisponibilidade do remoto, dois computadores, fast-forward, exclusões, arquivos ignorados/grandes, nomes especiais, links e locks. Nenhum teste envia ao GitHub ou executa o backup global.

版本与发布记录

backup-git 共发布 2 个版本,首次发布于 2026/11/03;过去 12 个月发布了 2 个版本。

版本发布日期距今
2.0.0latest2026/11/03今天
0.0.0-stage2026/11/03今天

关于 backup-git 的常见问题

backup-git 是什么?

备份Git本地项目,com confirma_<s:1> do envio e diagnóstico de sincroniza_<s:1> <e:1> o。

如何安装 backup-git?

在项目目录运行 npm install backup-git,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 backup-git、backup_git、backup_github,可以用 npx backup-git 直接运行。

backup-git 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/backup-git 是否存在。

backup-git 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

backup-git 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

backup-git 可以商用吗?

backup-git 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

backup-git 还在维护吗?

最新版本 2.0.0 发布于 2026/11/03(今天);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/11/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。