git的学习与使用

git Learning

git 安装和使用以及多场景应用

1.背景

Git是什么?

Git是世界上最先进的分布式版本控制系统,由Linus Torvalds编写,用于高效处理从小型到大型项目的版本管理。Git最初设计用于Linux内核开发,现已成为开源和商业软件开发中最流行的版本控制系统。

Tip

版本控制系统:又叫修订控制或源控制系统,是一种软件实用程序,用于跟踪和管理对文件系统的更改。VCS 还提供协作实用程序,用于与其他 VCS 用户共享和集成这些对文件系统的更改。

VSC

VCS

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

与分布式系统对应的就是集中式版本控制系统

集中式版本控制系统:集中式版本控制系统(CVCS)使用单一的中央服务器来存储所有文件的所有版本。用户从中央服务器检出文件的最新版本进行工作,并在完成后将更改提交回中央服务器。

Note

集中式版本控制系统的缺点:

  1. 单点故障:如果中央服务器出现故障,整个团队都无法进行版本控制操作。
  2. 网络依赖:用户必须连接到中央服务器才能进行检出、提交等操作。
  3. 性能瓶颈:随着团队规模的增大,中央服务器的性能可能成为瓶颈。
  4. 数据安全性:所有数据都存储在中央服务器上,一旦服务器被攻击或损坏,数据可能丢失。

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

2. 安装Git

最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,现在Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。

2.1 在Linux上安装Git

在大多数Linux发行版上,尝试输入git,如果提醒系统没有安装Git,就可以通过包管理器安装它。


# ubuntu / debian
sudo apt install git

2.2 在MacOS上安装Git

使用homebrew安装

homebrew:MacOS 软件管理的利器

brew install git

2.3 在Windows上安装Git

  1. scoop安装

Windows也有软件管理器scoop,scoop github页面有安装说明,主要是使用普通用户打开powershell之后,输入命令安装

# 1. 设置执行策略
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# 2. 安装scoop
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

使用 C:\> scoop install git

  1. 本地安装

进入git官网 git-scm.com,下载Windows版本的安装包,双击安装即可。

3. 基本配置

安装完成后,建议进行一些基本配置,比如用户和邮箱

# 设置用户名
git config --global user.name "Your Name"

# 设置用户邮箱
git config --global user.email "

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址,有冒充的也是有办法可查的。

Tip

如果没有配置用户名和邮箱,Git会拒绝提交操作,提交的时候会报错无法提交,无论你修改什么文件内容都无法提交上去

4. 本地创建版本库/仓库

4.1 创建版本库

什么是版本库?版本库又名仓库(Repository),可以简单理解为一个目录,这个目录里面所有的文件都被git管理起来,每个文件的增删查改git都可以追踪,是为了任何时刻都可以追踪历史

创建版本库有两种方式: - 在本地创建一个新的版本库 - 从远程版本库克隆一个版本库到本地

创建一个库非常简单,选择自己想要创建库的目录,然后在该目录下执行下面的命令,下面都是按照MacOS和WSL2来介绍:

# 创建一个名为 gitlearn 的目录
mkdir gitlearn

# 进入 gitlearn 目录
cd gitlearn

# 初始化一个新的 Git 版本库
git init

瞬间Git就把仓库建好了,在当前目录下会生成一个隐藏的.git目录,这个目录就是Git用来管理版本库的核心目录,里面存放了所有的版本信息和配置文件。

下面是git文件的结构

[4.0K]  .
├── [  23]  HEAD
├── [4.0K]  branches
├── [  92]  config
├── [  73]  description
├── [4.0K]  hooks
│   ├── [ 478]  applypatch-msg.sample
│   ├── [ 896]  commit-msg.sample
│   ├── [4.5K]  fsmonitor-watchman.sample
│   ├── [ 189]  post-update.sample
│   ├── [ 424]  pre-applypatch.sample
│   ├── [1.6K]  pre-commit.sample
│   ├── [ 416]  pre-merge-commit.sample
│   ├── [1.3K]  pre-push.sample
│   ├── [4.8K]  pre-rebase.sample
│   ├── [ 544]  pre-receive.sample
│   ├── [1.5K]  prepare-commit-msg.sample
│   ├── [2.7K]  push-to-checkout.sample
│   └── [3.6K]  update.sample
├── [4.0K]  info
│   └── [ 240]  exclude
├── [4.0K]  objects
│   ├── [4.0K]  info
│   └── [4.0K]  pack
└── [4.0K]  refs
    ├── [4.0K]  heads
    └── [4.0K]  tags

9 directories, 17 files

4.2 把文件添加到版本库

所有的版本控制系统,只能追踪文本文件的改动,二进制文件是无法追踪的,比如图片、视频、音频等文件,Git只能把它们当作一个整体来管理,无法追踪它们的改动内容。

图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来

Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的

Important

文本是由编码的,中文有GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

使用Windows的童鞋要特别注意:千万不要使用Windows自带的记事本编辑任何文本文件,它把每个文件开头添加了0xefbbbf(十六进制)的字符