什么是Git
根据官方网站上的介绍: Git是免费开源的分布式版本控制系统.
什么是版本控制
首先来看这个场景:
张三和李四还有王五要共同完成一份报表, 他们决定分工合作, 一人填写一部分, 然后用QQ发送给对方.
三天以后, 文件夹里躺着十几个同名文件, 王五忍不下去了, 决定改变这个现状, 他决定给文件加上命名规范, 于是文件夹里的文件变成了这个样子:
文件名 | 解析 |
---|---|
财务报表_王五_Part1_20211026.xlsx | 王五在2021年10月26日对第一部分进行了修改 |
财务报表_张三_Part10_20210926.xlsx | 张三在2021年9月26日对第十部分进行了修改 |
财务报表_李四_Part3_20211016.xlsx | 李四在2021年10月16日对第三部分进行了修改 |
一大堆同名文件总算是可以区分了, 这就是一种简陋的手动的版本控制, 可是这样还是不太方便, 我们需要自动化的版本控制.
Git的诞生
Git最初是Linus为了管理Linux的源码而编写的, 最初的代码管理是手动进行的, 后来BitKeeper决定为Linux社区开放免费授权, 但是Linux社区的大佬们岂能受这商业公司的约束, 他们开始对其进行逆向工作. 合作自然是告吹了, Linus决定自行开发自动化版本控制系统, 以十天的时间编写出Git第一个版本.
开始使用Git
本着按需学习的原则, 此处直接介绍如何与Github配合使用.
Git环境的配置
Git的安装
此处仅介绍Windows平台下Git的安装.
从官网下载安装程序即可, 一路Next就可以了.
安装完了应该能在程序列表里看到 Git Bash
.
配置Git环境
首先是用户名和邮箱, 因为Git是分布式的版本管理系统, 所以机器需要知道 "来者何人".
1 | git config --global user.name "自己的用户名" |
以下是示例:
1 | git config --global user.name "JiaFeiMiao" |
注意命令中的 --global
参数,
该参数表示对配置的修改是全局的, 也就是说,
本机上的所有Git仓库都会使用这个配置, 当然,
也可以对仓库进行单独的设置.
接下来我们需要检查配置是否成功, 可以使用以下命令
1 | git config -l |
以下是本机上显示的内容 (部分信息用*代替)
1 | diff.astextplain.textconv=astextplain |
至此, Git环境就配置好了, 可以愉快的使用Git了.
Git的使用
创建Git仓库
运行下列命令就能在当前目录建立一个Git仓库了:
1 | git init |
将文件添加到仓库
1 | git add A.txt |
第一条命令是将A.txt
添加到仓库,
第二条命令是将A.txt
和B.txt
添加到仓库,
第三条命令是将目录下所有文件添加到仓库.
这里说添加可能不太准确,
git add
的作用更像是帮助文件进行注册,
从而将其做出的修改纳入下一次提交.
将文件提交到仓库
1 | git commit |
两条命令都能实现提交, 区别是带-m
参数会附上提交的说明,
此处强烈建议不要使用第一条命令, 每次提交都应该有对应的说明.
与Github配合
配置私钥和公钥
相关教程网上有一大把, 内容大同小异, 此处随便取了一个, 这是教程
下面简单讲一下背后的东西.
首先讲一下什么是SSH, 简单来说, SSH就是远程连接过程中的保安, 它能为远程连接提供安全性.
那么什么是私钥和公钥呢? 这是非对称加密中的一组概念.
非对称加密中需要两个密钥: 一个称为公钥, 用于加密明文; 一个称为私钥, 用于解密密文. 用于加密的公钥不能用于解密, 所以被称为非对称加密.
从远处仓库克隆到本地
在文件目录运行以下指令:
1 | git clone SSH地址 |
SSH地址的获取方法: 点击Github仓库中的Code, 然后点击SSH
例如:
1 | git clone git@github.com:**/**.git |
链接远程仓库
此处假设你经有本地Git仓库了, 如果你没有本地Git仓库, 请看上文.
采用以下命令添加远程仓库.
1 | git remote add origin SSH地址 |
origin是Git默认的远程仓库名称, 你可以修改这个名称.
将修改同步到远程仓库
采用以下命令
1 | git push 远程仓库名称 本地仓库名称 |
请务必注意仓库名称不能填错,
由于之前默认的master
有奴隶制糟粕残余的嫌疑,
现在Github等平台默认主分支名称换成了main
,
push
前请确认仓库名称.
确认方法:
在文件目录下打开Git Bash
, (右键,
点击Git Bash Here
)
1 | Admin@LAPTOP-**** MINGW64 /**/**** (master) |
括号中的即为要确认的仓库名称, 此处为master
.
注意:
push
前应该提交修改,
也就是说完整的命令应该是下面的形式(命令的参数均省略):
1 | git add |
将修改同步到本地分支
采用以下命令
1 | git pull 远程仓库名称 本地仓库名称 |