git - 使用 NPM 从 GitHub 存储库下载除 .gitignore 中的文件以外的所有文件?
问题描述
我正在尝试在我的 Discord.js 机器人中实现更新程序命令,因此无论何时键入;;update
,它都会检查我的 GitHub 存储库中的最新提交并下载文件中除文件之外的所有.gitignore
文件。
我在文件config.json
中有类似的.gitignore
文件,但是每当我尝试从存储库中提取时,config.json
都会被替换,并且我会丢失所有配置。我只想下载不在.gitignore
.
如果这有点拗口:
- 机器人内部的人员类型
;;update
。 - 从https://github.com/VenkSociety/Tsuyo 下载所有文件(.gitignore 中被忽略的文件除外)。
- 快乐的时光。
解决方案
如何从 repo 中删除文件(仅靠.gitignore
它自己是不够的)
最有可能的是,被覆盖的文件在添加到.gitignore
文件之前已添加到存储库。
如果该文件是在较旧的提交中添加到 repo 中的,您将需要删除该文件,然后将删除添加到索引中,然后进行新的提交。起初这是违反直觉的,因为您将删除文件,然后git add <file that was just deleted>
,但您只需要意识到您没有将文件本身添加到要提交的索引中,您只是将此文件的新更改添加到索引中承诺。这些更改可以是添加新文件、更改现有文件或从存储库中删除该文件。
一旦您提交删除,从那时起的任何提交都将没有该文件,并且如果您读取该文件,它将因为该.gitignore
文件而被忽略。
为什么您的文件不断被覆盖
这里的关键是添加文件.gitignore
不会自行从存储库中删除文件。它只会阻止 git 跟踪文件的任何新更改。结果是 repo 中的文件永远不会更改,因此即使您在本地更改它,repo 中的所有提交都将具有该文件的旧版本,因此一旦您签出任何提交,它将覆盖您的更改文件的旧版本。
推荐阅读
- javascript - 使用 body-parser bodyParser.json() 时为空 json
- html - css在边缘溢出'auto'
- python - 发送控制台中弹出的内容?
- python - 澄清 Python 中的测试驱动开发
- node.js - 如何在不解析 Node JS 中的整个文件的情况下获取工作簿表的名称
- python - 如何在 for 循环中保存 i 的值而不让迭代影响它
- mysql - Nodejs mysql查询返回奇怪的结果而不是记录
- apache-spark - 如何连接两列并在pyspark中的新列周围添加括号
- django - /new_bid/1 处的 Django 错误 NoReverseMatch 为 'addwatchlist' 反向,但未找到参数 '('',)'
- javascript - 你如何通过 npx 而不是 npm start 运行 electronjs?