Git

一、版本控制概要 工作区 暂存区 本地仓库 远程仓库

1.1、什么是版本控制

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

实现跨区域多人协同开发
追踪和记载一个或者多个文件的历史记录
组织和保护你的源代码和文档
统计工作量
并行开发、提高开发效率
跟踪记录整个软件的开发过程
减轻开发人员的负担,节省时间,同时降低人为错误

简单说就是用于管理多人协同开发项目的技术。

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

1.2 版本工具

集中式版本控制(SVN)

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。

分布式版本控制(Git)

Git是分布式版本控制系统,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。然后团队协作再通过远程仓库进行协作。

当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

1.3 暂存区(Staging area)

暂存区是工作区用来提交更改(commit)前可以暂存工作区的变化。

image

Git 命令操作

1 初始化仓库

Git操作前需要初始化仓库,用于存储版本管理的项目代码,目前仓库有2种类型:

  • 本地仓库:是在开发人员自己电脑上的仓库
  • 远程仓库:是在远程服务器上的仓库(跟团队其他成员共用)
    image
git config --global user.name "Your Name"-----配置自己的名称
git config --global user.email "email@example.com"-----配置自己的邮箱账户
git init---------初始化本地仓库

命令执行后,会在当前目录下多了一个.git的目录,这个目录是Git本地仓库,用于跟踪与管理代码(文件),没事别手动修改这个目录里面的文件,容易改乱了,导致Git仓库给蹦了。
image

2 添加文件

步骤1:创建一个普通文本文件
image

git add readme.txt--------**步骤2:将文件添加到暂存区**
git commit -m "添加了readme.txt文件"-------**步骤3:将文件添加到版本库**

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件)
执行完文件才会变绿(我上面截错图了),绿了就说明工作区和本地库一致了
image

3 Git工作流程

image
image
image

4 查看文件状态

git status # 查看当前git版本库的状态(查看缓存区中的文件内容)
git add .------可以把多个文件一起加到暂存区中

image

5 查看提交日志

git log

git log 命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

git log --pretty=oneline

image

黄色长长的字符串是本次提交的commit id, 是Git使用SHA-1算法产生唯一标识符,能保证全球唯一

6 查看差异

如果有改动,想看一下改了什么

git diff # 查看不同版本之间的文件差异

7 版本回退

git reset --hard HEAD^

可以回退到上一个版本

git reset --hard <commit id>

是指黄色的码,之前通过日志查出来的

8 删除操作

一般直接删除文件,在执行add.commit.操作

9 分支管理

分支管理的是Git灵魂,开发必不可少基本操作,必须掌握。

为啥存在分支?因为项目成品经过这几个流程: 开发, 测试,上线,bug修改,多版本发布等。同一个项目不同版本同时开发,同时测试,同时上线,怎么确保在这种复杂情况下让项目能独立,又能相关关联执行下去呢?Git给出解决方案是分支管理, 每一个阶段就是一个分支,即可以相互独立,又可以相互合并。

查看分支

image
系统默认给了master

创建分支

image

切换分支

image

创建并切换分支

image
每一个分支都是一个独立的文件夹,切换分支后,上一个分支的文件不会出现,我在master中写了一个文件,现在切换到dev分支上,里面是没有文件的,所以要在dev中去合并master

合并分支

image

删除分支

image

posted @ 2026-09-03 22:16  诺森德的雪原  阅读(26)  评论(0)    收藏  举报