git简介及前置教程

1.git简单介绍

Git是目前最主流的分布式版本控制系统,是免费开源的项目,核心的版本控制,用于进行多人的代码编辑,是团队开发的必备工具!

git的优点

  • git的是开源的,用户社区十分活跃,可以很快的找到教程和解决问题;
  • 完整的代码历史管理流程的能力,支持恢复、对比等
  • 多人协作开发必备工具,支持多人代码合并、同比
  • 分支管理简单,支持高效的创建分支和合并

2.git的基本概念

概念名称 描述
工作区(Workspace) 电脑里的代码库目录,新增、修改的文件会提交到暂存区
暂存区(stage 或 index) 用于临时存放文件的修改,实际上上它只是一个文件(.git/index),保存待提交的文件列表信息。
版本库/仓库(Repository) Git的管理仓库,管理版本的数据库,记录文件/目录状态的地方,所有内容的修改记录(版本)都在这里。
服务端/远程仓库(origin 或 remote) 服务端的版本库,专用的Git服务器,为多人共享提供服务,承担中心服务器的角色。本地版本库通过push指令把代码推送到服务端版本库。
本地仓库 用户机器上直接使用的的的版本库
分支(Branch) 分支是从主线分离出去的“副本”,可以独立操作而互不干扰,仓库初始化就有一个默认主分支master
(HEAD) HEAD类似一个“指针”,指向当前活动 分支最新版本
提交(Commit) 把暂存区的所有变更的内容提交到当前仓库的活动分支。
推送(Push) 将本地仓库的版本推送到服务端(远程)仓库,与他人共享。
拉取(Pull) 从服务端(远程)仓库获取更新到本地仓库,获取他人共享的更新。
获取(Fetch) 从服务端(远程)仓库更新,作用同拉取(Pull),区别是不会自动合并。
冲突(Conflict) 多人对同一文件的工作副本进行更改,并将这些更改合并到仓库时就会面临冲突,需要人工合并处理。
合并(Merge) 对有冲突的文件进行合并操作,Git会自动合并变更内容,无法自动处理的冲突内容会提示人工处理。
标签(Tags) 标签指的是某个分支某个特定时间点的状态,可以理解为提交记录的别名,常用来标记版本。
master(或main) 仓库的“master”分支,默认的主分支,初始化仓库就有了。Github上创建的仓库默认名字为“main
origin/master 表示远程仓库(origin)的“master”分支
origin/HEAD 表示远程仓库(origin)的最新提交的位置,一般情况等于“origin/master

git基本流程

  • 准备仓库:新建或者从服务端克隆一个仓库
  • 编写开发:在工作目录中添加、修改代码
  • 暂存(git add):将要进行版本管理的文件放入暂存区域
  • 提交(git commit):将暂存区域的文件提交到Git仓库
  • 推送(git push):将本地仓库推送到远程仓库,同步版本库,如:github、gitee、gitcode、gitlab等
  • 获取更新(fetch/pull):从远程仓库拉取到本地,获取他人推送到仓库的更新,与他人协作、共享

3.git安装和配置

  1. 前往git官网下载安装包进行安装点击前往Git官网下载页

git官网下载界面

注:下载后点击进行安装,安装的路径可以改变

安装完成后可使用命令进行安装版本查看

1
2
git --version
git version 2.33.0.windows.2
  1. git配置

Git有三个主要的配置文件:仓库/项目配置(–local) > 用户全局配置(–global) > 系统全局配置(–system)

系统全局配置(–system):包含了适用于系统所有用户和所有仓库(项目)的配置信息,存放在Git安装目录下:…Git\etc\gitconfig`。

用户全局配置(–global):当前系统用户的全局配置,存放用户目录:C:\Users\[系统用户名]\.gitconfig

仓库/项目配置(–local):仓库(项目)的特定配置,存放在项目目录下.git/config

常见使用命令

1
2
3
4
5
6
7
8
9
#查看git的配置
git config --list
git config -l
#查看系统的配置
git config --system --list
#查看当前用户(global)全局配置
git config --list --global
#查看当前仓库配置信息
git config --local --list

仓库的配置是多个配置的集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ git config --list
$ git config -l
diff.astextplain.textconv=astextplain
http.sslbackend=openssl
http.sslcainfo=你的安装地址/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
init.defaultbranch=master
user.name=用户名
user.email=邮箱

配置-初始化用户

1
2
3
4
5
6
7
$ git config --global user.name "你的用户名"
$ git config --global user.email "邮箱"
# 配置完后,看看用户配置文件:
$ cat 'C:\Users\电脑用户名\.gitconfig'
[user]
name = 你的用户名
email = 邮箱

配置忽略.gitignore

工作目录中的文件并不是全部都需要纳入版本管理中,.gitignore可以实现将不需要管理的文件排除

  • 在工作目录下创建.gitignore文件,文件中设置不要进行版本管理的文件
  • 注意:.gitignore文件本身是被纳入版本管理的
  • .gitignore文件书写规则如下:
    • #符号实现行注释
    • *符号代表任意各字符
    • ?代表一个字符
    • [字符…]代表可以从中可选的字符范围
    • {字符串1,字符串2,…}代表可选的字符串等
    • !代表例外规则,带有!的不会被忽略
    • /filesname表示忽略根目录下的文件filesname
    • filesname/表示忽略文件夹filesname
1
2
3
4
5
6
#为注释
*.txt #忽略所有“.txt”结尾的文件
!lib.txt #lib.txt除外
/temp #仅忽略项目根目录下的temp文件,不包括其它目录下的temp,如不包括“src/temp”
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

注:在各种语言中常用的.gitignore文件配置点击前往github

4.git的GUI的工具

除了使用命令行工具外,我们还可以额外的安装并使用GUI界面工具,使用起来更加的简单易上手、且更加的直观;

  • TortoiseGit

    :小乌龟,SVN时代就很流行的代码管理GUI利器。

    • 🚫只有Windows版本,支持中文,需要单独下载安装中文语言包。
    • ✔️开源,免费,与文件管理器的良好集成。
    • ✔️内置冲突对比解决工具。
  • Sourcetree

    :SourceTree是老牌的Git GUI管理工具了,也号称是最好用的Git GUI工具。

    • ✔️适用于 Windows 和 Mac 系统,内置中文版,自动识别语言。
    • ✔️免费、功能强大,使用简单。
    • ✔️功能丰富,基本操作和高级操作都设计得非常流畅,适合初学者上手,支持Git Flow。
    • 🚫无冲突对比工具,支持配置第三方组件。
  • GitHub Desktop:Github官方出品的Git管理工具。

  • GitKraken:GitKraken是一个跨平台GUI Git客户端,有免费版,专业版和企业版,这些版本启用了不同的功能。

注:本文参考并感谢安木夕