ILD

git学习笔记1:getting started
作者:Herbert Yuan 邮箱:yuanjp@hust.edu.cn
发布时间:2017-11-11 站点:Inside Linux Development

这个系列从<<Pro Git>>这本书学习Git。


Chapter 1 Getting started

Git是分布式的版本控制系统,clients完全mirror repository。每个checkout是所有数据的完全备份。


Git的黑历史 (:- 跳过)。


1.3 Git Basics

如果没了解Git的基本思想,那使用起来可能有很多困惑。


1.3.1 Snapshots, Not Differences

很多系统按基于base version的改变存储数据。Git不是这样的,Git认为数据是一个小文件系统的快照集,每次commit,git给所有文件拍个照。出于效率考虑,如果文件没有改变,Git不会再次存储文件,只是链接之前的文件。


1.3.2 Nearly Every Operation is Local

大多数Git操作只需要本地文件和资源,因为Git是分布式的。例如,浏览项目的历史不需要查询服务器。没有网络的时候,也可以commit。


1.3.3 Git has integrity

Git中的一切在存储时都是check-summed。Git使用SHA-1算法,结果是一个40个字符的字符串,使用16进制字符。会计算文件的hash,目录结构的hash。hash在Git中无处不在,实际上,Git在其数据库中,不是根据文件名存储的,而是它内容的哈希值。


1.3.4 Git Generally Only Adds data


1.3.5 The Three states

文件有3个主要状态:committed, modified, staged.

Committed意味着数据已经安全的提交到本地数据库。

Modified意味着你改变了文件内容,但还没有提交到本地数据库。

Staged意味着你标记了当前版本一个修改的文件到下次提交的快照。


这导致Git有3个主要的sections:Git directory, working directory and the staging area.


Git directory是Git存放元数据和目标数据库的地方。是Git最重要的部分,也是你clone repository时拷贝的部分。

Working directory是项目某个版本的单个checkout。这些文件从Git directory中的压缩数据库中pulled out,放在磁盘中供你使用和修改。

Staging area是一个简单的文件,通常包含在Git directory中,存储你下一次将要提交的信息。


基本的Git工作流(workflow)看起来向这样:

  1. 修改工作目录的文件。

  2. stage the files, adding snapshots of them to your staging area.

  3. commit,将staging area中的快照存储到Git directory。


安装(跳过)。


1.5 First-Time Git Setup

Git有一个配置工具:git config。Git的配置变量存储在下列3个不同的地方。


/etc/gitconfig 包含对所有用户及它们的仓库的配置,当使用git config的--system选项,配置的变量在这个文件。

~/.gitconfig 当前用户的配置,--global选项,对应这种配置。

git目录 (.git/config),是每个仓库对应的配置。


后一个配置覆盖前一个配置。


1.5.1 Your Identity

安装Git后的第一件事,是设置user name和e-mail address。每次git commit都使用这个信息,而且它永恒地嵌入到那次提交。通常将user name和e-mail放入global配置中:

1
2
$ git config --global user.name 'Herbert Yuan'
$ git config --global user.email 'yuanjp@hust.edu.cn'


1.5.2 Your Editor

配置默认编辑器

1
$ git config --global core.editor vim


1.5.3 Your Diff Tool

配置差异比较工具

1
$ git config --global merge.tool vimdiff


1.5.4 Checking your settings

使用--list选项,列出所有的变量,一个变量可能出现多次(不同的配置级别),后出现的覆盖前面的。

1
2
3
4
5
$ git config --list
user.name=Herbert Yuan
user.email=yuanjp@hust.edu.cn
core.editor=vim
merge.tool=vimdiff


要检查Git使用的某个变量的值:

1
2
$ git config user.name
Herbert Yuan


1.6 Getting help

有下面3种方式获取任何Git命令的manual page (manpage):

1
2
3
$ git help <verb>
$ git <verb> --help
man git-<verb>


1
man git-config


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.