写在前面

  Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2。唯一不足就是,很多讲解并没有实机演示。但是,毫无疑问,官网资料是最全面的!如果有任何疑问,可以去官网看看!

什么是 Git

  Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
  Linus 个人对于集中式版本控制系统并不感兴趣,在 Git 出来之前,集中式版本控制系统要比分布式版本控制系统更加流行(彼时,分布式版本控制系统很少,其中 BitKeeper 就是比较出色的一个)。而 Linus 最终选择了分布式版本控制系统 BitKeeper 来管理 Linux 源码。

诞生

  在 Linux 开源的初期,Linux 开源项目的代码是 linus 本人通过 linux 命令 diff 和 patch 两条命令手动完成。随着 Linux 代码越来越壮大,靠 Linus 一个人来手动合并已经不现实。2002 年,Linus 选择了一个商业版本控制系统 BitKeeper 作为 Linux 内核的代码管理工具(BitKeeper 的开发商 BitMover 授权 linux 社区免费使用)。但是,免费使用是有很多的限制的,因此 linux 社区的大佬开始破解 BitKeeper。其中,samba 的作者 andrew 破解成功了。但是被 BitMover 公司发现,收回免费使用权。
  迫不得已,Linus 选择了自己开发一个分布式版本控制工具以替代 BitKeeper。linus 闭关一个月,写出了 Git。在一个月后,Git 成功接管了 Linux 社区的版本控制工作,并且开始开源。维基百科中,有如下历史记录:

  • 2005 年 4 月 3 日,开始开发 Git。
  • 2005 年 4 月 6 日,项目发布。
  • 2005 年 4 月 7 日,Git 就可以作为自身的版本控制工具了。
  • 2005 年 4 月 18 日,发生第一个多分支合并。
  • 2005 年 4 月 29 日,Git 的性能就已经达到了 Linus 的预期。
  • 2005 年 6 月 16 日,Linux 核心 2.6.12 发布,那时 Git 已经在维护 Linux 核心的源代码了。

  在 2005 年 7 月 26 日,Linus 功成身退,将 Git 的维护交给另外一个 Git 的主要贡献者 Junio C Hamano。

在 Linus Torvalds 开发出 Git 分布式版本控制系统 11 年后的 2016 年,BitKeeper 宣布在 Apache 2.0 许可证下开源。

Git 安装

  Git 本身支持 Mac OS X、Windows、Linux/Unix 这些主流的平台。

其中,Mac OS X 和 Windows 都是直接在官网下载安装包。对于 Windows 平台,还有个网站:https://gitforwindows.org/。注意,下载需要翻墙! 而 Linux/Unix 则主要是通过各自的包管理工具来安装:

// Debian/Ubuntu
// For the latest stable version for your release of Debian/Ubuntu
# apt-get install git
// For Ubuntu, this PPA provides the latest stable upstream Git version
# add-apt-repository ppa:git-core/ppa # apt update; apt install git
// Fedora
# yum install git (up to Fedora 21)
# dnf install git (Fedora 22 and later)
// Gentoo
# emerge --ask --verbose dev-vcs/git
// Arch Linux
# pacman -S git
// openSUSE
# zypper install git
// Mageia
# urpmi git
// Nix/NixOS
# nix-env -i git
// FreeBSD
# pkg install git
// Solaris 9/10/11 (OpenCSW)
# pkgutil -i git
// Solaris 11 Express
# pkg install developer/versioning/git
// OpenBSD
# pkg_add git
// Alpine
$ apk add git
// Red Hat Enterprise Linux, Oracle Linux, CentOS, Scientific Linux, et al.
// RHEL and derivatives typically ship older versions of git. You can download a tarball and build from source, or use a 3rd-party repository such as the IUS Community Project to obtain a more recent version of git.
// Slitaz
$ tazpkg get-install git

下面主要以 Windows 平台为例来简单介绍一下!为了节约文章篇幅,将个截图进行了拼接。其实,我们不需要关心安装中的各种配置,直接以默认的选项安装就可以! 对于大多数的配置,我们在安装完成后也是可以再次更改的!安装过程中,主要是配置一些配套工具。因为 Git 本身是个命令行工具!

安装中的这些选项最终会生成一个配置文件。具体为 Git 安装目录 \mingw32\etc\gitconfig

一二三


需要注意的是:

  • 第二步:配置 Git 的安装选项。例如 桌面图标、文件关联、检测升级等等
  • 第三步:选择默认的编辑器。默认的是 Vim。看图中的说明,其推荐更换为比较现代的编辑器。Git 支持如下编辑器:

    对应的配置文件是 Git 安装目录 \mingw32\etc\gitconfig

四五六

  • 第四步:调整系统环境变量
  • 第五步:配置 Git 中使用的 HTTPS 通信使用的加密库
  • 第六步:选择换行符

七八九

  • 第七步:Git 是个命令行工具(使用我们常见的那个黑框)。Git 可以选择两种黑框:Windows 系统的 CMD 和 MSYS2 中的 MinTTY

最后,点击 Install 就开始安装了!

完成

安装完成后,我们就可以打开 Git 了。Git 提供了一个 GUI 界面 和 一个 Bash 界面,如下图:

其中,GUI 界面仅能实现很少的一部分功能。通常我们可以在提交代码时,使用比较简单;Bash 功能更加强大,可执行全部的命令操作!

配置

  Git 的配置是通过 Git 提供的命令来实现的。Git 命令的使用可以参见另一篇博文。Git 的配置主要就是 Git 命令 git config 的使用。Git 提供了一个叫做 git config 的命令,专门用来配置或读取相应的工作环境变量。这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。Git 的配置按照作用范围优先级从高到低如下:

  1. 仓库级别
    优先级最高,仅对所在的仓库有效,对应的参数是 git config --local。对应的配置文件是 当前工作目录中/.git/config 文件
  2. 用户级别
    优先级次之,对所有仓库有效。如果没有配置仓库级别,则会启用本配置。对应的参数是 git config --global。对应的配置文件是 ~/.gitconfig 文件(Windows下就是系统盘符:/用户/你的用户名/.gitconfig
  3. 系统级别
    优先级最低,对所有仓库有效。如果没有以上两种级别,则会启用本配置。对应的参数是 git config --system。对应的配置文件在 Linux 系统下的 /etc/gitconfig,在 Windows 系统下的Git 安装目录\mingw64\etc\gitconfig我们在安装时所选择的配置就在该配置文件中。

高级别的配置都会覆盖低的相同配置。所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。使用 git config --list 查看相关配置。

注意:有时,通过上面的命令,可能出现重复变量,它们来自不同的配置文件,不过,最终 git 会采用上面说明的最近目录中的参数。

在 Windows 下,还有个配置文件目录:系统盘符:\ProgramData\Git\config
更详细的使用说明,见 Git 安装目录下的说明文档

  下面我们重点介绍常用的一些配置。Git 本身支持的配置项有很多,官网 https://git-scm.com/docs/git-config.html 有介绍。在以下的举例中,默认都是使用 --global 参数,其对应的配置文件为 系统盘/用户/你的用户名/.gitconfig

身份

  首先,Git 是分布式版本控制系统,必须要能区别每个成员,所以,每个机器都必须自报家门:你的名字和 Email 地址。要使用 Git 这个配置是必须的,否则在使用Git 时会提示用户进行设置。

$ git config --global user.name "ZCShou"
$ git config --global user.email ZCShou@live.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下(Windows下就是系统盘符:/用户/你的用户名/.gitconfig),以后你所有的项目都会默认使用这里配置的用户信息。 如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目.git/config 文件里。其中,后者会覆盖前者而起作用!

远程访问

  在 Git 架构的版本控制系统中,通常也会有个服务器仓库用来同步各协作者的操作。例如,我们比较了解的 Github 就是其中之一。要访问远程服务器上的仓库,我们就需要一定的协议。Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP/HTTPS 协议,SSH(Secure Shell)协议及 Git 协议。例如,Github 就提供了 SSH 和 HTTPS 这两种方式,如下图:

  • 本地协议(Local): 无需要配置
  • Git 协议: 无需配置
  • HTTP/HTTPS: 每次推送,Git 服务器会询问用户名与密码。 默认情况下它会在终端中提示服务器是否允许你进行推送。如果不想在每一次推送时都输入用户名与密码,你可以设置一个 “credential cache”。 最简单的方式就是将其保存在内存中几分钟,可以简单地运行 git config --global credential.helper cache 来设置它。在 Windows 系统中,在输入过用户名密码之后,会被系统给保存下来!我们可以如下图所示的位置进行修改:
  • SSH: 通过 SSH 协议克隆版本库,你可以指定一个 ssh:// 的 URL:git clone ssh://user@server/project.git 或者使用一个简短的 scp 式的写法:git clone user@server:project.git
      现有的很多平台(例如 Github)都是以 SSH 秘钥的方式进行通信的!因此如果我们要以 SSH 的方式访问远程仓库,则根据 SSH 协议,必须要生成我们 Key。Git 客户端默认是带有 OpenSSH 的,配置方式是使用命令ssh-keygen -t rsa -C "youremail@example.com",如下:

    如上图,如果我们不填写保存 Key 的文件名,则默认会在系统用户的主目录下生成 .ssh 的文件夹下保存生成的 Key,如下图

    如果填写了保存 Key 的文件名,则会指定的位置保存我们的 Key(如果没有填写路径,则会在 Bash 当前工作目录下)。

关于 Git 使用的协议 及远程仓库的使用,具体见博文Git 之四 通信协议(HTTPS、SSH、Git)、使用远程仓库(GitHub、GitLab、Gitee等)!

文本编辑器

  Git 默认使用的文本编辑器, 一般 Vim。这个编辑器做什么用呢?在我们提交(commit )代码时,需要添加说明,此时就需要一个编辑器;再比如,我们在 Git Bash 命令行中编辑 Git 的配置文件时,也需要一个编辑器!默认情况下,在需要用户输入时,Git 会启用 Vim。如果我们更改后,则会在有输入打开我们设置的编辑器。我使用的是 VSCode(insider 版本)

$ git config --global core.editor Code-Insiders.exe

使用以上命令注意 --global 参数,其位于 系统盘的 User 目录下。下图是 Git 官网给出的 编辑器命令列表:

一个使用示例,具体如下:

注意:

  1. 确保你得编辑器在环境变量中
  2. 注意 --global 参数,与上面的说明一样
  3. 当然,该项也可以在安装时选择,具体见上一节安装的讲解部分。

差异比较工具

  Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。

$ git config --global merge.tool vimdiff

内容推送

  不带任何参数的git push,默认只推送当前分支,这叫做 simple 方式。此外,还有一种 matching 方式,会推送所有有对应的远程分支的本地分支。Git 2.0 版本之前,默认采用 matching 方法,现在改为默认采用 simple 方式。如果要修改这个设置,可以采用 git config 命令。

$ git config --global push.default matching
# 或者
$ git config --global push.default simple

其他

Git 官网有详细的介绍所有的配置项 https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-%E9%85%8D%E7%BD%AE-Git 。

配置完成后,就可以开启 Git 的使用之旅了。

参考

  1. http://www.runoob.com/git/git-tutorial.html
  2. http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
  3. http://www.yanyaozhen.com/category/git/
  4. https://www.bootcss.com/p/git-guide/6089557264a6b348958f449949df42a6d3a2e542c000
  5. http://www.yanyaozhen.com/category/git/
  6. https://www.bootcss.com/p/git-guide/

Git 之一 起源、安装、配置相关推荐

  1. Git Windows下安装配置

     1. 下载 tortoisegit: http://download.tortoisegit.org/tgit/1.8.14.0/ Git for windows: http://msysgit ...

  2. Git GitHub 的安装配置

    参考   教你免费搭建个人博客,Hexo&Github   安装Git 1. 注册 GitHub 注册.登录 https://github.com/ 2. 创建仓库 在 GitHub 的右上角 ...

  3. linux7下安装git,centos7下安装配置git仓库

    1.安装git yum -y install git 2.添加git用户和git用户组 useradd git 设置密码 passwd git 3.创建git仓库目录 我放在/var/gitdata/ ...

  4. 【Git】从安装配置到简单使用

    Git的下载和安装 下载链接:官网下载.百度云下载 安装说明:双击exe文件,默认配置完成安装,开始菜单里出现如下图的三个图标. Git基本配置 安装完成后,我们需要进行两项配置,一项是配置自己的名字 ...

  5. git 码云 安装配置使用图文详解

    码云 快速使用 以下步骤以 oschina/git-osc 仓库为例子,在您使用 Gitee 的过程中,具体链接地址请填写对应的仓库地址. 快速设置: 如果您知道该怎么操作,直接使用下面的地址: ht ...

  6. git 安装配置(windows环境)

    git 安装配置(windows环境) 1.下载地址:https://git-scm.com/downloads 注意:安装路径中不要存在中文,安装过程中都选择默认选项即可. 2.双击运行git-ba ...

  7. Git安装配置(Linux)

    使用yum安装Git yum install git -y 编译安装 # 安装依赖关系 yum install curl-devel expat-devel gettext-devel openssl ...

  8. Git客户端图文详解如何安装配置GitHub操作流程攻略

    Git客户端图文详解如何安装配置GitHub操作流程攻略 软件应用 爱分享  3个月前 (08-15)  8896浏览  0评论 Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来 ...

  9. Git 基础 —— 安装 配置 别名 对象

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 Git 安装 Git下载地址 ...

最新文章

  1. python socket 通信
  2. 印度太阳能企业争取对中、台、马实施反倾销税
  3. 如何训练大学生的工程实战能力
  4. 3D图形图像处理软件HOOPS介绍及下载
  5. APUE读书笔记-14高级输入输出-06异步IO
  6. java的默认_java默认包的使用
  7. 改改Python代码,运行速度还能提升6万倍
  8. react div 事件优先级_React 架构的演变 更新机制
  9. struts2 配置
  10. 密码学中的一些数学基础
  11. 使用laravel搭建博客网站-博客的注册功能
  12. linux达梦服务重启,如何重启达梦数据库服务
  13. tplink怎么进去_如何进入路由器设置界面 如何登陆无线路由器
  14. 孕妇睡眠质量差怎么办?如何提高睡眠质量?
  15. shopnc mysql_shopnc配置
  16. c语言求最小公倍数和最大公约数三种算法
  17. 笔记 - Front End - 新知识点归纳
  18. 弗洛伊德(Floyd)算法之两点之间的最短距离问题
  19. 以色列量子计算软件公司,与欧洲机构合作开发薛定谔猫状态纠错技术
  20. Python 自己简单地造一个轮子.whl文件

热门文章

  1. 量子计算101:浅谈其需求、前景和现实
  2. js 异步和同步的区别
  3. 一个ioc例子jdk和spring版本导致问题
  4. 理解Fragment生命周期
  5. 开源 java CMS - FreeCMS2.4 菜单管理
  6. 1-Dimensional Heightfield Visibility Query
  7. [导入]SQL中的临时表和表变量
  8. 眨眼算什么,让蒙娜丽莎像你一样唠上嗑才算硬核
  9. SpringBatch顺序读取多文件(MultiResourceItemReader)和顺序写文件(MultiResourceItemWriter)(二)
  10. reactjs三个常用的Hook:State Hook、 Effect Hook、 Ref Hook