git处理不同步的logs目录

开发了某个app,提交到git,然后另一台机clone了这个app。这个app里有个logs目录,里面是access.log等日志。在生产环境里,两台机产生的logs肯定不一致。这样在一台机push代码后,在另一台机执行pull肯定不成功,提示:

error: Your local changes to the following files would be overwritten by merge:
APP/logs/access.log
Please, commit your changes or stash them before you can merge.

因为我并不想commit这个机的日志,于是执行了git stash。git stash将当前工作区的内容放入存档,并将工作区恢复到上次commit的内容,此时可以执行git pull了。git stash list查看历史的stash存档,git stash clear清掉所有存档。

但显然这不是一个好的处理方法。更好的做法是在commit时,忽略掉logs目录下的文件。于是回到第一台机,先把logs下的文件,执行git rm *删除。这是因为,已加入git版本库的文件,是无法忽略的。删除后commit一次。再进入logs目录,编写一个.gitignore文件,加入如下内容:

*
!.gitignore

第一行星号表示本目录下的所有文件都忽略,第二行表示.gitignore文件自身不忽略。如果连.gitignore文件也忽略了,那么在版本库里,logs整个目录被删除。而app运行需要这个目录,所以不能删掉。处理完后,再提交,此时logs下的文件就完全被忽略了。这样在生产环境里,两台机的logs目录产生不一样的内容,也不会影响版本管理。

此条目发表在Common分类目录,贴了, 标签。将固定链接加入收藏夹。