什么是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是分布式的版本管理系统, 所以机器需要知道 "来者何人".
git config --global user.name "自己的用户名"
git config --global user.email "自己的邮箱"
以下是示例:
git config --global user.name "JiaFeiMiao"
git config --global user.email "JiaFei@jiafeimiao.onmicrosoft.com"
注意命令中的 --global 参数, 该参数表示对配置的修改是全局的, 也就是说, 本机上的所有Git仓库都会使用这个配置, 当然, 也可以对仓库进行单独的设置.
接下来我们需要检查配置是否成功, 可以使用以下命令
git config -l
以下是本机上显示的内容 (部分信息用*代替)
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
core.editor="C:\Users\Admin\AppData\Local\Programs\Microsoft VS Code\Code.exe" --wait
push.default=simple
user.name=***
user.email=***
至此, Git环境就配置好了, 可以愉快的使用Git了.
Git的使用
创建Git仓库
运行下列命令就能在当前目录建立一个Git仓库了:
git init
将文件添加到仓库
git add A.txt
git add A.txt B.txt
git add .
第一条命令是将A.txt添加到仓库, 第二条命令是将A.txt和B.txt添加到仓库, 第三条命令是将目录下所有文件添加到仓库.
这里说添加可能不太准确, git add的作用更像是帮助文件进行注册, 从而将其做出的修改纳入下一次提交.
将文件提交到仓库
git commit
git commit -m "消息"
两条命令都能实现提交, 区别是带-m参数会附上提交的说明, 此处强烈建议不要使用第一条命令, 每次提交都应该有对应的说明.
与Github配合
配置私钥和公钥
相关教程网上有一大把, 内容大同小异, 此处随便取了一个, 这是教程
下面简单讲一下背后的东西.
首先讲一下什么是SSH, 简单来说, SSH就是远程连接过程中的保安, 它能为远程连接提供安全性.
那么什么是私钥和公钥呢? 这是非对称加密中的一组概念.
非对称加密中需要两个密钥: 一个称为公钥, 用于加密明文; 一个称为私钥, 用于解密密文. 用于加密的公钥不能用于解密, 所以被称为非对称加密.
从远处仓库克隆到本地
在文件目录运行以下指令:
git clone SSH地址
SSH地址的获取方法: 点击Github仓库中的Code, 然后点击SSH
例如:
git clone git@github.com:**/**.git
链接远程仓库
此处假设你经有本地Git仓库了, 如果你没有本地Git仓库, 请看上文.
采用以下命令添加远程仓库.
git remote add origin SSH地址
origin是Git默认的远程仓库名称, 你可以修改这个名称.
将修改同步到远程仓库
采用以下命令
git push 远程仓库名称 本地仓库名称
请务必注意仓库名称不能填错, 由于之前默认的master有奴隶制糟粕残余的嫌疑, 现在Github等平台默认主分支名称换成了main, push前请确认仓库名称.
确认方法:
在文件目录下打开Git Bash, (右键, 点击Git Bash Here)
Admin@LAPTOP-**** MINGW64 /**/**** (master)
括号中的即为要确认的仓库名称, 此处为master.
注意:
push前应该提交修改, 也就是说完整的命令应该是下面的形式(命令的参数均省略):
git add
git commit
git push
将修改同步到本地分支
采用以下命令
git pull 远程仓库名称 本地仓库名称