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