Git的正确使用姿势与最佳实践 |青训营

154 阅读6分钟

Git 概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

为什么需要版本控制 :个人开发过渡到团队协作。

像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

  1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
  2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

Git 安装

下载

Git 下载地址(windows): git-scm.com/download/wi…

Git 阿里镜像(windows): registry.npmmirror.com/binary.html…

安装

下载完成之后,双击安装包。

查看 GNU 协议,可以直接点击下一步

选择 Git 安装位置,要求是非中文并且没有空格的目录,然后下一步

Git 选项配置,推荐默认设置,然后下一步

image-20230828154951283.png

Git 安装目录名,不用修改,直接点击下一步。

Git 的默认编辑器,建议使用默认的 Vim 编辑器,然后点击下一步。

image-20230828155820751.png

默认分支名设置,选择让 Git 决定,分支名默认为 master,下一步。

image-20230828155858319.png

修改 Git 的环境变量,选第一个,不修改环境变量,只在 Git Bash 里使用 Git。

image-20230828155926547.png

选择后台客户端连接协议,选默认值 OpenSSL,然后下一步。

image-20230828155952035.png 配置 Git 文件的行末换行符,Windows 使用 CRLF,Linux 使用 LF,选择第一个自动转换,然后继续下一步。

image-20230828160031897.png 选择 Git 终端类型,选择默认的 Git Bash 终端,然后继续下一步。

image-20230828160107169.png

选择 Git pull 合并的模式,选择默认,然后下一步。

选择 Git 的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步。

image-20230828160153425.png 其他配置,选择默认设置,然后下一步。

image-20230828160233917.png

实验室功能,技术还不成熟,有已知的 bug,不要勾选,然后点击右下角的 Install按钮,开始安装 Git。

点击 Finsh 按钮,Git 安装成功!

Git 基本使用

Git 基本命令

右键能够找到Git GUI和Git Bash。

image-20230828160523790.png 点击Git Bash Here,进入Git终端。输入git --version 查看当前的 git 版本。

image-20230828160730612.png

命令作用
git config --global user.name 用户名设置用户名
git config --global user.email 邮箱设置用户邮箱
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m "日志信息" 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭
git log查看版本详细信息

git init

image-20230828162113751.png

git status

显示没有需要提交。

image-20230828162537712.png

创建一个HelloGit文件。再使用git status。显示有一个文件可以提交到本地库。

image-20230828163143057.png

git add

image-20230828163427507.png

此时,HelloGit.txt的文件名为绿色的,表示已上传到暂存区。

git commit

image-20230828163744387.png

"first commit"是对该版本的说明

提交成功后,查看状态,显示没有需要提交。给HelloGit.txt文件修改内容。文件名变红,说明该文件需要被提交。

image-20230828164117076.png

这时,我们需要先使用 git add HelloGit.txt 先将文件添加到暂存区,再使用git commit -m "second commit" HelloGit.txt

git reflog

image-20230828191235755.png

git log

image-20230828192538200.png

git reset -hard version_id

image-20230828193122027.png

总结

Git 切换版本,底层其实是移动的 HEAD 指针,具体原理如下图所示。

image-20230828193331285.png

Git 分支操作

什么是分支

image-20230828193616056.png

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定分支合并到当前分支

image-20230828195031798.png

git branch -v 查看分支:带星号表示当前分支。

git branch hot-fix 创建分支:创建一个名叫hot-fix的分支

新创建的分支会复制当前分支上的内容

image-20230828195844312.png

切换到hot-fix分支,修改并提交HelloGit.txt到本地库,版本为"hot-fix first commit".

image-20230828200312660.png

合并分支

将release分支合并到master分支中,先切换分支。

image-20230828200601996.png

合并冲突

冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。

image-20230828201557963.png

产生冲突:修改并提交了master分支HelloGit.txt文件的第三行,然后切换分支到hot-fix,修改并提交hot-fix分支HelloGit.txt文件的第三行。切换回master分支,合并hot-fix,此时冲突产生。表现形式为:

image-20230828202007665.png

此时查看文件

image-20230828202131877.png

其中的特殊符号:

<<<<<<< HEAD 
当前分支的代码 
======= 
合并过来的代码 
>>>>>>> hot-fix

解决冲突

  1. 编辑有冲突的文件,删除特殊符号,决定要使用的内容。
  2. 添加到暂存区
  3. 执行提交(注意:此时使用git commit 命令不能使用文件名)
  4. 冲突消失。

image-20230828203004706.png

总结

Git是一个分布式版本控制系统,它可以帮助我们管理和追踪代码的变更。相比于传统的集中式版本控制系统,如CVS和SVN,Git具有更高的灵活性和可扩展性。

Git的特点如下:

  1. 分布式:Git没有中心服务器,所有数据都在本地存储,这样更安全、可靠。
  2. 快速:Git在处理大量数据时非常高效,可以实时合并文件,不需要重新压缩。
  3. 智能:Git的日志功能非常强大,可以追踪代码的变更历史,还可以进行分支、合并等操作。
  4. 灵活:Git支持多种工作模式,如“快照”模式和“分支”模式,可以根据项目需求选择最适合的模式。

总之,使用Git可以让我们更好地管理和追踪代码的变更,提高开发效率,降低维护成本。