GIT相关

GIT

局限性

不要用git管理二进制文件

全部的版本控制系统,其实只能跟踪文本文件的改动,而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但无法跟踪文件的变化,只能把二进制文件每次改动串起来,例如记录图片从 100KB 改为了 120KB,可是并不知道具体文件改了什么。git

不要使用git管理word

Microsoft 的 Word 格式是二进制格式,所以,版本控制系统是无法跟踪 Word 文件的改动的。github

git下不要使用windows自带的记事本

Microsoft 开发记事本的团队使用了一个不合理的方法来保存 UTF-8 编码的文件,他们在每一个文件开头添加了 0xefbbbf(十六进制)的字符,建议使用Notepad++。算法

命令行再也不赘述

理解工做区 暂存区 分支区

git存在一个.git文件,里面存储配置信息和分支,以及一个暂存区
在进行提交时
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的全部内容提交到当前分支。
而git diff是查看暂存区和工做区(实际文件夹内容)的区别,因此git add后git diff就再也不显示区分
因此咱们能够从暂存区、分支区、远程库 这三条途径来还原历史windows

理解分支管理

分支其实是以图存储的,而所谓分支也及时master指针和其余分支指针的改动,在A、B分支不平行时则直接改动指针完成分支合并,若存在平行段,会要求显示的指定冲突部分如何肯定。数据结构

理解文件存储

git中在Objects文件夹存储组件,并利用hash算法SHA-1根据文件内容组件名,即造成键值对管理。
组件分四种:编码

  1. Commit 分支:
    内有一个tree组件,表明git库根目录,下附带若干对应于库中文件的blob和tree;内还有commit文件,即指向其余commit,即分支图数据结构的指针,新的commit拥有和老commit相同的组件,可是内容改变的部分发生了变换,因此一个blob可能被两组commit/tree共享
  2. Tree 文件夹:内部有若干记录,指向不一样的组件
  3. BLOB 文本:若文本内容没有改变,则不会新建blob;blob并不存储文本信息,而是存储其内容
  4. Tag 标签命令行

    组件

    Git中存在两种对象 - 松散对象和打包对象。
    简单的理解就是松散对象存储使用代价低,用来存文件的改变,打包对象代价高用来存储一系列松散对象hash-offset用以组合成文件。
    Git使用SHA-1值的前两个字符做为子目录名字, 因此一个目录中永远不会包含过多的对象. 文件名则是余下的38个字符。版本控制

github

github是基于git的面向开源及私有软件项目的托管平台,比较方便的github使用方式是利用github推出的GUI GithubDesktop。指针

相关文章
相关标签/搜索