GIT分布式版本控制系统
1.    内容冲突:两个用户修改了同一个文件的同一块区域,git会报告内容冲突。我们常见的都是这种,后面的解决办法也主要针对这种冲突。
2.    树冲突:文件名修改造成的冲突,称为树冲突。
比如,a用户把文件改名为a.cb用户把同一个文件改名为b.c,那么b将这两个commit合并时,会产生冲突。
3.    每个项目都有一个git目录,它是git用来保存元数据的和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。
4.    从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从git目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。
5.    git的工作流程:在工作目录中修改某些文件-》对这些修改了的文件做快照,并保存到暂存区域-》提交更新,经保存在暂存区的文件快照转储到git目录中。
6.    初次运行GIT前的配置:
git安装目录/etc/inputrc
找到如下配置代码
set output-meta off
set convert-meta on
修改成
set output-meta on
set convert-meta off
 
Git Bash中执行:
git config --global gui.encoding utf-8
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8
 
配置用户信息
git config --global user.name "Liu Ning"
git config --global user.email "2692885154@qq.com"
 
git config --global core.quotepath false
配置文本编辑器
git config --global core.editor vi
git config --global push.default current
 
git config --global core.autocrlf true
git config --global core.safecrlf true
 
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'
git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'
7.    git init初始化后,在当前目录下会出现一个名为.git的目录,所有git需要的数据和资源都放在这个目录中。
8     changed but not updated:为暂存_清单
9.    git clone git@192.168.1.10:~/text.git
10. 使用分支意味着你可以从开发主线上分离出来,然后在不影响主线的同事继续工作。
11.  远程仓库通常只是一个纯仓库,一个没有当前工作目录的仓库。
12.  git的全局配置文件:/etc/gitconfig,含有对系统上所有用户及他们拥有的仓库都生效的配置值,如果传递—system选项给git config命令,git会读写该文件
13.  git每个库本身的配置文件:.git/config,该文件中的值只对属主库有效。
14.  git config –global 为用户级别的配置
15.  git属性文件:/etc/gitattributes
16.  当你在一个新目录或已有目录内执行git init时,git会创建一个.git目录,
几乎所有git存储和操作的内容都位于该目录下。如果你要备份或复制一个库,
基本上将这一目录拷贝至其它地方就可以了。
17.  git的核心目录用途
config文件包含了项目特有的配置选项,
object目录存储所有的数据内容,
refs目录存储指向数据(分支)的提交对象的指针,
head文件指向当前分支,
index文件保存了暂存域信息。
18.  我们可以在.git/refs目录下面找到这些包含sha-1值的文件。
19.  创建git
$ mkdir ddd
$ cd ddd
$ git init
Initialized empty Git repository in c:/Users/user/git/ddd/.git/
$ find ./git/objects
.git/objects
.git/objects/info
.git/objects/pack
$ find .git/objects -type f  #查看有没有常规文件
$ echo 'test content' | git hash-object -w –stdin  
.git/objects/d6/70460b4b4aece5915caf5c68d12f560a9fe3e4
#指示hash-object命令存储对象,若不指定这个参数该命令仅仅返回键值。
#stdin指定从标准输入设备来读取内容,若不指定这个参数则需指定一个要存储的文件的路径。该命令输出长度为40个字符的校验和。这是个sha-1哈希值其值为要存储的数据加上头信息的校验和。
$ find .git/objects -type f
.git/objects/d6/70460b4b4aece5915caf5c68d12f560a9fe3e4
可以在objects目录下看到一个文件,这便是git存储数据内容的方式为每份内容生成一个文件,取得该内容与头信息的sha-1校验和,创建以该校验和前两个字符为名称的子目录,并以(校验和)剩下38个字符为文件名(保存至子目录下)
$ git cat-file -p d670460b4b4aece5915caf5c68d12f560a9fe3e4
test content
#通过cat-file命令可以将数据内容取回
#-p参数可以让该命令输出数据内容的类型。
$ git hash-object -w test.txt
#可以获取到文件的sha-1
$ git cat-file -p d670460b4b4aece5915caf5c68d12f560a9fe3e4 > ddd.txt
#根据文件的sha-1值回复文件
$ git cat-file -t d670460b4b4aece5915caf5c68d12f560a9fe3e4
Blob
#通过传递SHA-1值给cat-file –t命令可以让git返回任何对象的类型。
 
 
近日初学git,这是我的一点笔记,希望各位大师斧正!
参考资料:Pro Git中文版手册