GIT
分布式版本控制系统
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1.
内容冲突:
两个用户修改了同一个文件的同一块区域,
git
会报告内容冲突。我们常见的都是这种,后面的解决办法也主要针对这种冲突。
2.
树冲突:
文件名修改造成的冲突,称为树冲突。
比如,
a
用户把文件改名为
a.c
,
b
用户把同一个文件改名为
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
中文版手册
转载于:https://blog.51cto.com/liuning/951176