上网了解下解决办法是将 git 清除本地缓存,即 git rm -r --cached 文件名,然后再提交,但是这样会把生产环境的该文件也会一并删除的吧?
有什么安全的解决办法?
![]() | 1 itechify PRO .gitignore 不是负责忽略提交吗? |
2 securityCoding 2024-02-02 20:09:04 +08:00 via Android 你的版本没提交吧 |
![]() | 3 geelaw 2024-02-02 20:11:15 +08:00 via iPhone ![]() 因为 .gitignore 的效果是让 Git 不关心文件的出现(准确理解“出现”是重点),比如 git add . 不会把当前目录下被 .gitignore 匹配的、新出现的文件加到 index 。如果文件已经被 Git 追踪,那 .gitignore 匹配上也不会有任何效果,比如 git add . 会把当前目录下被 .gitignore 匹配的、已经被 Git 追踪的、且发生了变化的文件的变化加入 index 。 我想楼主应该已经自学了 git rm 里 r 和 cached 的含义了,不再多嘴。至于“生产环境也……”“怎么安全解决”,我们不知道你对生产环境的担忧是什么,因为我们不知道你的生产环境是如何部署的。 |
4 thinkershare 2024-02-02 20:13:01 +08:00 请将问题描述清楚。 |
![]() | 5 geelaw 2024-02-02 20:13:32 +08:00 via iPhone ![]() @geelaw #3 应该强调的是“不关心出现”是指不关心工作目录里的出现,已经被 Git 追踪的文件(存在于 commit 里面的)当然会在 checkout 的时候放置在工作目录下,checkout 的过程和 .gitignore 没有任何关系。 |
6 dddd1919 2024-02-02 21:10:24 +08:00 1. 先把生产的配置拷贝到另一个目录 2. 本地删除 git 里的生产配置并提交 3. 更新生产代码 4. 在生产配置目录软链到实际配置文件所在位置 5. 重启服务 |
![]() | 7 raykle 2024-02-02 23:01:37 +08:00 你到底是不想拉下来还是不想提交上去 |
8 fan123199 2024-02-02 23:06:30 +08:00 你知道 op 的需求,就是想 ignore 的某个文件,但是又不把这个文件从 origin 删除。这个我目前看的方法,都是用其他方式来解决。 比如, 你要一个 xxxconfig. 那么你需要新建一个 xxxconfig.template, 添加 xxxconfig ,然后都写一个 init 脚本,mv xxxconfig.template xxx.config 。clone 的时候初始化一下 |
![]() | 9 dontLookAvatar 2024-02-02 23:18:33 +08:00 .gitignore 只忽略未提交前的文件, 但已提交过的还是会存在. 而且, gitignore 影响不了拉取吧 |
![]() | 10 devliu1 2024-02-02 23:24:21 +08:00 via Android gitignore 只是前端验证,已经提交过的仍然存在。 |
11 mxT52CRuqR6o5 2024-02-03 03:18:40 +08:00 via Android 用 git gui 工具,手动选择提交范围 |
![]() | 12 keakon 2024-02-03 10:50:44 +08:00 via Android git add -f 是可以强制添加被忽略的文件的 |
![]() | 13 wanguorui123 2024-02-03 11:28:54 +08:00 拉取下来删除再提交就对了 |
14 iseki 2024-02-03 15:53:13 +08:00 via Android 你们的生产环境部署,难道是直接 git pull 吗?这个稍微粗暴了一点,改成通过 CD 去拷贝文件吧 |
15 dongzhuo777 2024-02-04 09:40:01 +08:00 ![]() 因为 在加.gitignore 之前 就有人把它 push 上去了。 你要做的,先拉下来 然后做一次删除的 commit ,然后再把它 push 上去 |