Git 学习笔记

Git 简介

Git,开源,分散型版本控制系统。由于 Linux 内核开发使用的 SCM 版权变更,Linux 创始人便创建了 Git。现在 Git 的仓库管理功能是 GitHub 的核心。

在 Git 之前还有 Apache 的 SVN,集中型。

集中型:将所有仓库集中存放在服务端,所以最终只有一个仓库。因此便于管理。缺点:服务器出现磁盘故障,版本库的完整性无法保证;服务器无法连接,无法获取最新的源码。

分散型:不存在服务端。开发者之间可以互相 pull 和 push,Fork 和 Pull Request,因此需要事先制定规范,不然初学者不知道最新的代码在哪个仓库。Fork 就是将 Git 的某个仓库复制到自己的账户下,但 Fork 的仓库和原仓库是不同的仓库。

由于 Git 和 GitHub 的普及,要是规则制定得当,分散型也能便于管理。

Git 与 SVN 的区别:

  • Git 是分布式,最核心的区别。
  • 所有的 SCM 都是把文件的元信息隐藏在类似 .svn 的文件夹里。在这种文件夹里,Git 按元数据存储内容,SVN 按文件。
  • 分支不同。
  • Git 没有全局版本号,SVN 有。Git 比 SVN 缺少的最大的特征。
  • Git 内容完整性比 SVN 好:Git 内容存储使用 SHA-1 哈希算法。在分布式的基础上,进一步确保内容完整性,降低磁盘故障和网络问题对版本库的破坏。

 

 

Git 配置

Linux 或者 Mac 环境以 LF 换行;Win 环境以 CRLF 换行。GitHub 中公开的代码大部分以 LF 换行,所以在安装 Git 的时候,应选择 Checkout CRLF,commit LF。

提供了一个 git config 工具,用来配置或读取相应的环境变量。在 Win 环境下,环境变量可以保存在三个地方的文件夹:

  • 安装目录 / mingw64 / etc / gitconfig 文件:系统配置,对所有用户都适用。使用 git config --system [值] 命令读写。
  • 用户主目录 / .gitconfig 文件:只适用该用户。使用 git config --global [值] 读写。
  • 当前项目 / .git / config 文件:只适用当前项目。使用 git config 读写。适用范围越小的配置,会覆盖范围大的相同配置。

配置文本编辑器(默认可能是 vi 和 vim)和差异分析工具(也可以自己开发工具):

 

查看配置信息:

查看配置信息列表(如果没有添加选项,就可能会有重名的配置。从上到下,对应配置范围从大到小):

git config --list

读写某一个:

git config key [value]

或者直接找到文件进行编辑,还或者用命令(如在用户主目录下):

atom .gitconfig

 Git 工作区、暂存区、版本库

  • 工作区:磁盘下能看到的目录(非隐藏目录)。
  • 版本库:即之前提到的 .git 目录,是隐藏目录。
  • 暂存区:一般存放在版本库的 index 文件中。英文名称为 stage 或者 index,故有时也称索引。

三者关系如下:

 

 

 


 

GitHub:

  1. 本地创建ssh key:ssh-keygen -t rsa -C "your_email@youremail.com"。直接全部回车,使用默认值(在用户目录下生成.ssh文件夹,存放公钥和私钥)
  2. 打开公钥id_rsa.pub,复制key,然后在github上添加SSH Key。
  3. 验证是否成功:ssh -T git@github.com(使用某个ip第一次执行该命令,访问github时,会提示输入“密码”)
  4. 设置用户名和邮箱(commit的时候会记录):
    1. git config --global user.name "your name"
    2. git config --global user.email "your_email@youremail.com"
posted @ 2018-01-06 12:28  不抛弃,不放弃  阅读(195)  评论(0编辑  收藏  举报