首页 > 解决方案 > 使用 NPM 从 GitHub 存储库下载除 .gitignore 中的文件以外的所有文件?

问题描述

我正在尝试在我的 Discord.js 机器人中实现更新程序命令,因此无论何时键入;;update,它都会检查我的 GitHub 存储库中的最新提交并下载文件中除文件之外的所有.gitignore文件。

我在文件config.json中有类似的.gitignore文件,但是每当我尝试从存储库中提取时,config.json都会被替换,并且我会丢失所有配置。我只想下载不在.gitignore.

如果这有点拗口:

  1. 机器人内部的人员类型;;update
  2. 从https://github.com/VenkSociety/Tsuyo 下载所有文件(.gitignore 中被忽略的文件除外)
  3. 快乐的时光。

标签: gitgithub

解决方案


如何从 repo 中删除文件(仅靠.gitignore它自己是不够的)

最有可能的是,被覆盖的文件在添加到.gitignore文件之前已添加到存储库。

如果该文件是在较旧的提交中添加到 repo 中的,您将需要删除该文件,然后将删除添加到索引中,然后进行新的提交。起初这是违反直觉的,因为您将删除文件,然后git add <file that was just deleted>,但您只需要意识到您没有将文件本身添加到要提交的索引中,您只是将此文件的新更改添加到索引中承诺。这些更改可以是添加新文件、更改现有文件或从存储库中删除该文件。

一旦您提交删除,从那时起的任何提交都将没有该文件,并且如果您读取该文件,它将因为该.gitignore文件而被忽略。

为什么您的文件不断被覆盖

这里的关键是添加文件.gitignore 不会自行从存储库中删除文件。它只会阻止 git 跟踪文件的任何新更改。结果是 repo 中的文件永远不会更改,因此即使您在本地更改它,repo 中的所有提交都将具有该文件的旧版本,因此一旦您签出任何提交,它将覆盖您的更改文件的旧版本。


推荐阅读