为什么代码库的.gitignore 里明明把某个文件忽略掉了,但是拉取的时候依然会把该文件拉下来?

320 天前
 UnrealEngine

上网了解下解决办法是将 git 清除本地缓存,即 git rm -r --cached 文件名,然后再提交,但是这样会把生产环境的该文件也会一并删除的吧?

有什么安全的解决办法?

2507 次点击
所在节点    程序员
15 条回复
oneisall8955
320 天前
.gitignore 不是负责忽略提交吗?
securityCoding
320 天前
你的版本没提交吧
geelaw
320 天前
因为 .gitignore 的效果是让 Git 不关心文件的出现(准确理解“出现”是重点),比如 git add . 不会把当前目录下被 .gitignore 匹配的、新出现的文件加到 index 。如果文件已经被 Git 追踪,那 .gitignore 匹配上也不会有任何效果,比如 git add . 会把当前目录下被 .gitignore 匹配的、已经被 Git 追踪的、且发生了变化的文件的变化加入 index 。

我想楼主应该已经自学了 git rm 里 r 和 cached 的含义了,不再多嘴。至于“生产环境也……”“怎么安全解决”,我们不知道你对生产环境的担忧是什么,因为我们不知道你的生产环境是如何部署的。
thinkershare
320 天前
请将问题描述清楚。
geelaw
320 天前
@geelaw #3 应该强调的是“不关心出现”是指不关心工作目录里的出现,已经被 Git 追踪的文件(存在于 commit 里面的)当然会在 checkout 的时候放置在工作目录下,checkout 的过程和 .gitignore 没有任何关系。
dddd1919
320 天前
1. 先把生产的配置拷贝到另一个目录
2. 本地删除 git 里的生产配置并提交
3. 更新生产代码
4. 在生产配置目录软链到实际配置文件所在位置
5. 重启服务
raykle
320 天前
你到底是不想拉下来还是不想提交上去
fan123199
320 天前
你知道 op 的需求,就是想 ignore 的某个文件,但是又不把这个文件从 origin 删除。这个我目前看的方法,都是用其他方式来解决。 比如, 你要一个 xxxconfig. 那么你需要新建一个 xxxconfig.template, 添加 xxxconfig ,然后都写一个 init 脚本,mv xxxconfig.template xxx.config 。clone 的时候初始化一下
dontLookAvatar
320 天前
.gitignore 只忽略未提交前的文件, 但已提交过的还是会存在. 而且, gitignore 影响不了拉取吧
devliu1
320 天前
gitignore 只是前端验证,已经提交过的仍然存在。
mxT52CRuqR6o5
319 天前
用 git gui 工具,手动选择提交范围
keakon
319 天前
git add -f 是可以强制添加被忽略的文件的
wanguorui123
319 天前
拉取下来删除再提交就对了
iseki
319 天前
你们的生产环境部署,难道是直接 git pull 吗?这个稍微粗暴了一点,改成通过 CD 去拷贝文件吧
dongzhuo777
318 天前
因为 在加.gitignore 之前 就有人把它 push 上去了。
你要做的,先拉下来 然后做一次删除的 commit ,然后再把它 push 上去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1013746

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX