1.git中怎样实现忽略已经提交过的文件
.gitignore给我们忽略一些git上不想要的文件提供了方便, 但是如果有些文件已经提交 给 git管理的话 那么 设置gitignore是没有作用的 但是我们不小心提交了本应该忽略的文件怎么办呢?
理解 .gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
解决方案:
- 从 Git 的数据库中删除对于该文件的追踪;
- 把对应的规则写入 .gitignore,让忽略真正生效;
- 提交+推送。
只有这样做,所有的团队成员才会保持一致而不会有后遗症,也只有这样做,其他的团队成员根本不需要做额外的工作来维持对一个文件的改变忽略。
最后有一点需要注意的,git rm --cached
删除的是追踪状态,而不是物理文件;如果你真的是彻底不想要了,你也可以直接 rm
+忽略+提交。(其中 放在忽略文件忽略的文件提交后会删除远程仓库的对应文件)
2.拉取远程仓库后不提交配置文件
假设网站有一个数据库配置文件database.php,通过git做版本控制,已经将这个文件提交到git库中。但是本地的数据库配置是读取的本地数据库,所以希望这个database.php文件在每次提交代码的时候不被提交。说明:通过.gitignore是无法办到的,因为database.php已经加入版本控制了
执行命令将database.php加入不提交队列 git update-index --assume-unchanged config/database.php 执行命令将db.php取消加入不提交队列 git update-index --no-assume-unchanged config/database.php config/database.php 为文件的路径
加入不提交队列后 对配置文件的修改后不会加入文件追踪的状态中 仅对本地更改有效和仓库配置文件互不影响