Git 指南 -- 什么应该被纳入管理?
Git 指南 -- 什么应该被纳入管理?
如果还不了解Git是什么,可以先阅读这篇博文:http://www.cnblogs.com/schaepher/p/5561193.html
是作品,而不是产品
什么是作品?
精心设计,手工打造的。举例:
- 源代码文件
- 部分配置文件
- 文档(包括个人写作,博客等)
什么是产品?
可以批量生产的。举例:
- 编译、链接产生的临时文件、目标文件、可执行文件
- 发行的软件包
- 运行时生成的日志文件、临时文件
如何防止不必要的文件被纳入管理?
.gitignore
在被git管理的目录内,我们可以放置.gitignore文件来让git过滤那些不需要关注的文件。
详细说明及规则请参考:https://git-scm.com/docs/gitignore
资源
Github 已经为各类工程整理了常规情况下需要过滤的文件,可在这里查看:https://github.com/github/gitignore
把与自己工程类型对应的文件内容复制到自己工程的.gitignore中保存即可。
如果已经提交不必要的文件怎么办?
如果是少量的小文件,通常不必做什么,正常删除即可。但是如果不小心提交了不必要大文件,或者非常多的小文件,导致整个git仓库的大小变得难以接受,这时候就需要做清理工作。
注意:无论如何,请先做好备份,避免误操作导致自己的作品丢失!
简单粗暴的方法
如果你有一份远程仓库
- 把需要保留的文件复制出来一份
- 删除整个本地仓库
- 从远程仓库重新
git clone一份下来 - 把第一步复制出来的文件覆盖进去,再提交
如果你在本地已经有多次提交并且没有做git push,会使得这部分提交记录丢失,但是留住了最新版本+已经push到远程的版本!
优雅的方法(有点复杂)
如果你很清楚要移除那些文件
- 删除并重写提交记录
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch xxx'
其中xxx填写你要删除的文件名,当然也支持通配符,如:*.tar.gz 匹配所有的后缀名为 tar.gz 压缩包。
- 删除引用
rm -rf .git/refs/original/
rm -rf .git/logs/
- 垃圾回收并清理
git gc
git prune --expire now
如果你不知道是哪个文件占用那么大空间(比如这个文件已经在当前版本被删除了,但是历史版本里存在),请参考文档:移除对象
Git 指南 -- 什么应该被纳入管理?的更多相关文章
- git指南目录
git指南目录 发表回复 蓝色表示未阅读,棕色表示阅读过,绿色表示阅读过但不太理解 1. 起步 1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 安装 Git 1.5 初次运行 ...
- 使用VSTS的Git进行版本控制(七)——管理仓库
使用VSTS的Git进行版本控制(七)--管理仓库 在团队项目中创建Git repo管理项目的源代码.每个Git repo都有自己的权限和分支,可以与项目中的其他工作隔离开来. 任务1:从web门户创 ...
- SVN里直接把本地目录纳入管理
如果本地有个已有的目录,要直接纳入SVN管理,怎么办呢?直接在Repository Browser里面 Add folder,但这样虽然把目录加到SVN,但本地目录没有纳入管理,你还要重新又下到本地才 ...
- 5-15 devise(git指南,部分认为重要的内容的译文)
git指南:https://github.com/plataformatec/devise 维基百科上有how to 的很多文章. Stackoverflow有大量问题的答案. 全的文档devise: ...
- Git 学习(七)标签管理
Git 学习(七)标签管理 发布版本时,通常会先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.取出某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照. ...
- Git 学习(六)分支管理
Git 学习(六)分支管理 几乎每一种版本控制系统都支持分支.使用分支意味着你可以从开发主线上分离开来,然后不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录 ...
- git学习(5)分支管理(续)
git学习(5)分支管理(续) 1.解决冲突 冲突的产生 如我们在新建分支和原来master分支上对同一文件做了修改并提交,在合并分支的时候就会遇到冲突 比如我新建了分支myBranch,在这个分支上 ...
- 基于Git的数据库sql文件的管理——完美解决团队sql操作协同问题
目录 基于Git的数据库sql文件的管理--完美解决团队sql操作协同问题 1.产生背景 2.之前没用Git管理数据库出现的问题 2.1 用同一个库调试带来的问题 3.解决方案 3.1 Sql文件的创 ...
- Eclipse集成Git做团队开发:分支管理
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
随机推荐
- ps 命令的详细功能解析
转自:http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/2185938.html 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就 ...
- [SCOI2007]压缩 区间dp
明显是个区间dp,但是我区间dp就是个渣... f[i][j]表示区间i到j最短的字符长度:假设前面加了个M,所以初始化f[i][i]=2;当然最开始是不算M的,所以f[1][1]=1;然后就可以区间 ...
- 再起航,我的学习笔记之JavaScript设计模式08(建造者模式)
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...
- .Net高级进阶,WebApi和MVC进行模型验证的时候,教你如何自由控制需要进行验证的字段?
现在,你有一个MVC架构的web项目,你要完成一个注册功能. 前台传了3个值到你的控制器,分别是账号.密码.邮箱. 如图:现在你要在控制器里面判断,账号名称.密码.邮箱不能为空,并且名称和密码不超过1 ...
- Tomcat修改端口
当在服务器上运行报错说端口已占用的时候,需要修改Tomcat的端口,步骤如下: 一.找到Tomcat的安装目录 二.进入conf目录,找到server.xml文件,记事本打开 此时文件中有三个地方可以 ...
- 【Ganglia】集群监控系统搭建
参考博客 www.cnblogs.com/atomicbomb/p/6726119.html 操作系统 centos7 机器两台 一. 配置软件环境 操作步骤: 使用yum安装方式安装所需基础依赖包 ...
- sed 实践案例 (不定期更新)
删除每行第一个字符 sed -r 's/^.//g' /etc/passwd 删掉每行第二个字符 sed -r 's/^(.)(.)/\1/g' /etc/passwd 删掉每行最后一个字符 sed ...
- MySql COUNT(),SUM()组合用法
需求:统计工作室表的数量,按创建时间分组 问题:按创建时间分组,如何将计数后的结果求和 解决:用COUNT(DISTINCT col_name)讲每行计数为1,再求和分组 SELECT DATE_FO ...
- ASP.NET Core开发期间部署到IIS自定义主机域名并附加进程调试
在.NET Framework环境下,我们经常会这么做 把一个web项目不经过发布直接部署到IIS里去,配置上主机名,修改一下hosts文件,就可以用自定义的域名来访问我们的应用程序,使用附加到进程( ...
- 将指定目录中的txt文件转化成excel文件
#!/usr/bin/env python#coding:utf-8import reimport osimport globimport xlwtimport sysdir=r"F:\te ...