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有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
随机推荐
- 在实际项目中使用LiteDB NoSQL数据库
LiteDB 是一个 NoSQL 数据库,特点是 MongoDB like 和 0 配置.100% 原汁原味的 C# 开发, Release 只有一个 DLL,官方有一下适用场景:移动App,桌面小应 ...
- HTML的学习笔记
一.HTML的概述(了解) a.html是什么 : hypertext markup language 超文本标记语言 超文本:音频,视频,图片称为超文本.. ...
- Jenkins安装与配置
Jenkins安装与配置 2 Jenkins安装 在最简单的情况下,Jenkins 只需要两个步骤: 1.下载最新的版本(一个 WAR 文件).Jenkins官方网址: http://Jenkins- ...
- nodejs 文件读取一行
作者QQ:1095737364 QQ群:123300273 欢迎加入! 废话没有,直接上代码: app.get('/company', function (req, res, nex ...
- Maven干货
好处: 1. 依赖管理:对jar包统一管理 2. 项目构建: 项目编码完成后,对项目进行编译.测试.打包.部署.之前项目构建通过eclipse工具实现.今天学习新的工具也可以实现这些过程.比如:通过m ...
- MySQL表空间集
--MySQL表空间集 ----------------------2014-09-20 1. 收缩ibdata的方法,目前MySQL依然没有提供收缩ibdata的方法,只能重构,下面是5.7的步骤. ...
- hdu 6125 -- Free from square(状态压缩+分组背包)
题目链接 Problem Description There is a set including all positive integers that are not more then n. Ha ...
- 2、粘包现象(struct模块)
昨天我们所做的套接字是有漏洞的,它会出现粘包现象,没有发现这个问题的我们今天会进行演示.今天也会稍微讲解一下基于udp的套接字. 一.基于udp的套接字 udp是无链接的,先启动哪一端都不会报错 ud ...
- linux 简易启动脚本
#/bin/bash pid=`ps -ef | grep 'testDemo' | grep -v grep |awk '{print $2}'` in start) nohup java -j t ...
- multisim页面设置
options—sheet properties 页面右键—properties