当前位置: 首页 > article >正文

Git 的基本概念和使用方式(附有思维导图)

一、Git 简介

Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 在 2005 年为帮助管理 Linux 内核开发版本而开发 。与集中式版本控制系统(如 SVN)不同,在分布式系统中,每个开发者的本地机器都拥有一个完整的 Git 仓库副本,包括代码和版本信息,这使得开发者在没有网络连接的情况下也能进行提交等操作,后续再同步到远程仓库。而集中式版本控制系统中,开发者的本地只保存工作副本,版本历史记录等都存储在中央服务器上,离开服务器很多操作无法进行。

二、Git 基本概念

(一)仓库(Repository)

仓库是 Git 存储项目所有文件和版本历史记录的地方,可以看作是项目的文件夹。它分为本地仓库和远程仓库:

  • 本地仓库:在开发者本地计算机上的仓库,通过git init命令可以在现有项目目录中初始化一个新的本地仓库,初始化后会在该目录下生成一个隐藏的.git文件夹,里面包含了所有必要的仓库文件。
  • 远程仓库:存储在云端或其他计算机上的仓库,如 GitHub、GitLab 等平台都提供远程仓库托管服务。远程仓库用于团队成员之间共享代码、协作开发,以及备份代码。每个远程仓库都有一个唯一的 URL,方便开发者克隆到本地或与之进行数据交互。

(二)提交(Commit)

提交是将文件的变化记录到 Git 仓库中的操作。每次提交都会创建一个包含唯一标识符(commit id,通常是一个很长的哈希值)的快照,这个快照记录了提交时项目中所有文件的状态。提交时还需要添加提交信息,用于简要描述本次提交所做的更改,方便后续查看历史记录时理解更改内容。

(三)分支(Branch)

分支是仓库中不同版本的副本,它允许开发者在不影响主分支(如 master)的情况下,独立地进行开发工作。例如,在开发新功能时,可以创建一个新分支,在该分支上编写、测试代码,完成后再合并到主分支。这样可以有效地管理多个开发任务,防止不同功能开发过程中的代码冲突。默认情况下,新创建的仓库有一个名为master的主分支。可以使用git branch命令查看当前仓库的分支情况,git branch <分支名>命令创建新分支。

(四)主分支(Master)

主分支是 Git 中默认的分支,通常用于存储生产环境中的稳定代码。在很多项目中,主分支上的代码是经过严格测试和验证的,可直接用于发布上线。不过现在也有很多项目使用main分支作为主分支。

(五)克隆(Clone)

克隆是从远程仓库中复制整个仓库到本地的操作。通过git clone <远程仓库URL>命令,开发者可以将远程仓库完整地下载到本地计算机,包括所有的文件、分支以及版本历史记录。克隆后,本地就有了一个可以独立进行开发的副本。

(六)拉取(Pull)

拉取是从远程仓库获取最新代码,并将其合并到本地仓库当前分支的操作。当团队中其他成员对远程仓库进行了修改,本地开发者可以使用git pull命令将这些修改拉取到本地,保持本地代码与远程仓库同步。git pull命令相当于先执行git fetch(从远程仓库获取最新的提交对象到本地仓库,但不自动合并),再执行git merge(将获取到的分支合并到当前分支)。

(七)推送(Push)

推送是将本地仓库中已提交的更改上传到远程仓库的操作。开发者在本地完成代码修改、提交后,通过git push命令将本地分支的更改推送到远程仓库,这样其他团队成员才能看到这些修改。推送时需要注意权限设置,以及本地分支和远程分支的对应关系。

(八)合并(Merge)

合并是将一个分支的修改整合到另一个分支的操作。当在一个分支上完成新功能开发或代码修复后,通常需要将该分支合并到主分支或其他目标分支。例如,在功能分支上开发完新功能后,切换到主分支,然后使用git merge <功能分支名>命令将功能分支的更改合并到主分支。如果合并过程中出现冲突(即不同分支对同一文件的同一部分进行了不同的修改),则需要手动解决冲突后再继续合并操作。

(九)冲突(Conflict)

当 Git 无法自动合并两个不同分支的修改时,就会产生冲突。例如,两个开发者同时修改了同一个文件的同一行内容,在合并分支时 Git 就无法确定应该保留哪个版本,这时就需要开发者手动编辑冲突文件,选择保留哪些更改,删除哪些冲突标记,然后再提交以完成合并。

(十)标签(Tag)

标签是对某个特定版本的引用,通常用于标记项目的发布版本,如v1.0v2.0等。通过标签可以方便地查看和切换到项目的某个历史版本。创建标签的命令是git tag <标签名>,还可以添加-a参数创建带附注的标签,并使用-m参数添加标签说明。

三、Git 使用方式

(一)安装与配置

  1. 安装:根据操作系统下载对应的 Git 安装包,然后按照安装向导进行安装。例如,在 Windows 系统上,可以从 Git 官方网站(Git)下载安装包;在 Linux 系统上,可以使用包管理器进行安装,如在 Ubuntu 系统上使用sudo apt-get install git命令安装。
  2. 配置:安装完成后,需要配置用户信息,以便在提交代码时标识身份。打开命令行工具,执行以下命令:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

--global参数表示对当前用户的所有仓库都生效,如果只想对某个特定仓库进行配置,则去掉该参数,在该仓库目录下执行配置命令。

(二)基本操作流程

以一个新建项目为例,以下是使用 Git 进行版本控制的基本操作步骤:

  1. 初始化仓库:在项目目录下,打开命令行工具,执行git init命令,将当前目录初始化为一个 Git 仓库。此时会在项目目录下生成一个隐藏的.git文件夹。
  2. 添加文件到暂存区:将项目中的文件添加到暂存区,暂存区是一个临时区域,用于暂存即将提交的文件更改。可以使用git add <文件名>命令添加单个文件,或使用git add.命令添加当前目录下的所有文件。例如,项目中有一个main.cpp文件,要将其添加到暂存区,执行git add main.cpp
  3. 提交更改:将暂存区的文件更改提交到本地仓库,执行git commit -m "提交信息"命令,其中-m后面的双引号内填写本次提交的简要说明,如 “初始化项目,添加 main.cpp 文件”。
  4. 连接远程仓库:如果需要与远程仓库进行协作,需要先将远程仓库添加到本地仓库的配置中。假设远程仓库的 URL 为https://github.com/user/repo.git,执行git remote add origin https://github.com/user/repo.git命令,将远程仓库命名为origin(这是一个常用的默认名称)。
  5. 推送更改到远程仓库:执行git push -u origin master(如果主分支是main,则为git push -u origin main)命令,将本地仓库的master(或main)分支推送到远程仓库的master(或main)分支。-u参数会将本地分支与远程分支建立追踪关系,后续推送时可以直接使用git push

(三)分支管理操作

  1. 查看分支:执行git branch命令,列出当前仓库的所有分支,当前所在分支前面会有一个星号*标识。
  2. 创建新分支:执行git branch <分支名>命令创建一个新分支,例如git branch feature-1创建一个名为feature-1的新分支。
  3. 切换分支:可以使用git checkout <分支名>命令切换到指定分支,例如git checkout feature-1切换到feature-1分支;从 Git 2.23 + 版本开始,也可以使用git switch <分支名>命令进行切换。
  4. 合并分支:假设在feature-1分支上完成了功能开发,要将其合并到main分支,先切换到main分支,即git checkout main(或git switch main),然后执行git merge feature-1命令将feature-1分支的更改合并到main分支。

(四)解决冲突

当合并分支出现冲突时,Git 会在冲突文件中标记出冲突的部分,格式如下:

plaintext

<<<<<<< HEAD
// 主分支上的代码内容
=======
// 待合并分支上的代码内容
>>>>>>> feature-1

开发者需要手动编辑文件,删除冲突标记<<<<<<< HEAD=======>>>>>>> feature-1,并选择保留合适的代码内容,然后保存文件。接着,再次执行git add <冲突文件名>将文件重新添加到暂存区,最后执行git commit -m "解决冲突并完成合并"完成合并操作。

(五)查看历史记录

使用git log命令可以查看提交历史记录,默认会显示每次提交的详细信息,包括提交的哈希值、作者、日期、提交信息等。如果希望输出更加简洁,每行只显示一个提交的简短信息,可以使用git log --oneline命令。

(六)撤销更改

  1. 撤销暂存区的更改:如果只是想取消暂存区中文件的更改,将其恢复到工作区的状态,可以使用git reset <文件名>命令;如果要取消暂存区中所有文件的更改,则使用git reset.命令。
  2. 撤销已提交的更改:如果想要撤销最近的一次提交,可以使用git reset HEAD~1命令,这会将 HEAD 指针回退到上一次提交,同时工作区和暂存区的内容也会相应改变。如果希望保留工作区的更改,只撤销提交,可以使用git revert <commit id>命令,该命令会创建一个新的提交来撤销指定提交的更改。

四、Git 可视化工具

除了命令行操作,也有许多可视化工具可以帮助使用 Git,它们提供了图形界面,使操作更加直观:

  • GitKraken:功能强大,支持跨平台(Windows、Mac、Linux),界面简洁美观,方便进行分支管理、合并、解决冲突等操作,还能直观地查看提交历史和文件差异。
  • SourceTree:由 Atlassian 开发,同样支持多平台,它简化了 Git 的操作流程,提供了丰富的可视化功能,如可视化的提交历史、分支图等,适合初学者快速上手 Git 操作。

五、思维导图示例

若看不清晰,请私信我;


http://www.kler.cn/a/583715.html

相关文章:

  • 一维下料之 *贪心算法* —— CAD c#二次开发
  • 【软考-架构】3.3、模式分解-事务并发-封锁协议
  • C# WPF 基础知识学习(一)
  • 贪心算法(5)(java)k次取反后最大化的数组和
  • 什么是AI?AI能对我们生活产生哪些影响?
  • LeetCode 112. 路径总和 II java题解
  • 如何用Docker容器化Java应用?Spring Boot实战指南
  • Spring Boot 约定大于配置:实现自定义配置
  • HCIP复习拓扑练习(修改版)
  • 【3DGS】SuperSplat本地运行+修改监听端口+导入ply模型+修剪模型+在线渲染3DGS网站推荐
  • 设计模式C++
  • Java 8新特性:Lambda表达式与Stream API实战
  • OEM SQL Details and Session Details 5s 或者parallel 才会在sql monitor显示
  • Aliyun CTF 2025 web 复现
  • uniapp,自绘仪表盘组件(基础篇)
  • BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection 论文阅读
  • c# txt文档的实时显示,用来查看发送接收指令
  • 如何简单获取三个月免费试用的SSL证书
  • AI对前端开发的冲击
  • 第十课:项目部署与运维:从开发到生产