《Git 简易速速上手小册》第1章:Git 基础(2024 最新版)

在这里插入图片描述

文章目录

  • 1.1 Git 简介:版本控制的演变
    • 1.1.1 基础知识讲解
    • 1.1.2 重点案例:协作开发流程优化
      • 案例:功能开发与分支策略
    • 1.1.3 拓展案例 1:代码审查与合并
    • 1.1.4 拓展案例 2:冲突解决
  • 1.2 安装和配置 Git:首次设置
    • 1.2.1 基础知识讲解
    • 1.2.2 重点案例:在 Python 项目中初始化 Git 仓库
    • 1.2.3 拓展案例 1:配置忽略文件 `.gitignore`
    • 1.2.4 拓展案例 2:克隆远程仓库并进行初次推送
  • 1.3 基本命令:Add、Commit、Push
    • 1.3.1 基础知识讲解
    • 1.3.2 重点案例:为 Python 项目贡献代码
    • 1.3.3 拓展案例 1:使用 `.gitignore`
    • 1.3.4 拓展案例 2:解决冲突后推送

1.1 Git 简介:版本控制的演变

在软件开发的浩瀚宇宙中,版本控制系统(VCS)守护着每一行代码的安全。从最初的本地 VCS,如 RCS,到集中式 VCS,比如 SVN,再到分布式版本控制系统,如 Git,版本控制的演变反映了开发工作流程的不断进化和对协作支持的增强。

Git,作为一个开源的分布式版本控制系统,由 Linus Torvalds 在 2005 年创立,旨在提高代码的管理效率,支持非线性开发流程,并确保代码的完整性和历史记录的追溯性。Git 的设计哲学是以速度、简单的设计和对分布式非线性工作流的强大支持为核心。

1.1.1 基础知识讲解

在深入案例之前,让我们先回顾几个 Git 的重点基础知识:

  • 工作区、暂存区和仓库:工作区是你编辑工作的地方,暂存区(Index)是一个临时保存改动的地方,仓库则保存了项目的历史记录和版本信息。
  • 基本命令git init 初始化新仓库,git add 将改动添加到暂存区,git commit 将暂存区内容添加到仓库中,git push 将本地的更改推送到远程仓库。
  • 分支管理:Git 的分支管理让开发者能在不同的功能、实验或修复上独立工作,然后通过 git mergegit rebase 合并回主分支。

1.1.2 重点案例:协作开发流程优化

假设你是一个 Python 开发团队的一员,团队正在开发一个 Web 应用。你们决定使用 Git 来协作和管理代码。首先,每个开发者都需要在本地机器上配置 Git,并克隆项目仓库:

git clone https://github.com/yourproject/webapp.git

案例:功能开发与分支策略

你负责开发一个新的 REST API 接口。为了不干扰主分支(通常称为 mastermain),你创建了一个新分支:

git checkout -b feature/new-rest-api

在这个分支上,你开发了新的 Python 代码来实现接口功能,并使用 Git 来管理这些更改:

# 新功能的 Python 代码
def new_rest_api():
    return "Hello, World!"

完成开发后,你将更改添加到暂存区并提交到你的分支:

git add .
git commit -m "Add new REST API interface"

然后,将你的分支推送到远程仓库,并在仓库的 Web 界面上创建一个 Pull Request(PR),请求将你的分支合并到主分支。

1.1.3 拓展案例 1:代码审查与合并

团队成员在 PR 上进行代码审查,提出建议或批准更改。这个过程提高了代码质量并促进了团队协作。一旦 PR 获得批准,你的代码就可以合并到主分支了。

1.1.4 拓展案例 2:冲突解决

在合并过程中,可能会遇到代码冲突。假设另一个开发者也修改了同一个文件的同一部分,Git 无法自动合并。这时,你需要手动解决这些冲突,更新代码,并再次提交:

# 解决冲突后
git add .
git commit -m "Resolve merge conflict"
git push origin feature/new-rest-api

通过这些案例,我们看到了 Git 在实际生产中如何促进团队的高效协作,提高开发流程的灵活性和响应速度。Git 不仅仅是一个工具,它改变了我们编写、协作和发布软件的方式。

在这里插入图片描述


1.2 安装和配置 Git:首次设置

欢迎来到 Git 的世界!在这里,每个人都可以像时间旅行者一样自由地穿梭于代码的历史之中。但在开始旅行之前,我们需要先建立一个时光机——也就是安装和配置 Git。这个过程既是简单又是必要的,让我们从基础知识开始,逐步深入。

1.2.1 基础知识讲解

  • 安装 Git:Git 可以在 Linux、MacOS 和 Windows 上安装。大多数 Linux 发行版已经预装了 Git,而 MacOS 和 Windows 用户可以从 Git 官网下载安装程序。
  • 配置用户信息:安装 Git 后,首先需要设置你的用户名称和电子邮件地址。这是因为 Git 的每次提交都会使用这些信息,它们会被永久记录在你的提交历史中。
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
  • 检查配置信息:配置完成后,你可以通过以下命令检查你的配置信息:
git config --list

1.2.2 重点案例:在 Python 项目中初始化 Git 仓库

假设你正在开始一个新的 Python 项目,项目目录名为 python_project。在这个目录下,你想使用 Git 来管理项目的版本控制。

步骤 1:初始化仓库

首先,打开终端或命令行界面,切换到你的项目目录:

cd /path/to/python_project

然后,使用以下命令初始化一个新的 Git 仓库:

git init

这个命令会创建一个名为 .git 的隐藏目录,其中包含了仓库的所有元数据。

步骤 2:添加文件到仓库

创建一个名为 main.py 的 Python 文件,内容如下:

print("Hello, Git!")

使用 git add 命令将文件添加到暂存区:

git add main.py

步骤 3:提交更改

提交你的更改到仓库,包括一条有意义的提交信息:

git commit -m "Initial commit with main.py"

恭喜,你已经成功在你的 Python 项目中使用 Git 进行了第一次提交!

1.2.3 拓展案例 1:配置忽略文件 .gitignore

在实际开发中,有些文件不应该被加入到版本控制中,例如 Python 的 __pycache__ 目录或者 IDE 配置文件。你可以创建一个名为 .gitignore 的文件,在其中列出所有你想要 Git 忽略的文件和目录:

__pycache__/
*.pyc
.idea/
.vscode/

1.2.4 拓展案例 2:克隆远程仓库并进行初次推送

当你加入一个团队项目,或者想要在 GitHub 上贡献代码时,通常需要从远程仓库克隆一个副本。假设你要贡献到一个开源的 Python 项目:

git clone https://github.com/opensource_project/python_project.git

克隆完成后,你可以在本地进行开发,然后将你的贡献推送回远程仓库。

这些案例展示了 Git 在 Python 项目开发中的实用性和必要性,从项目初始化到日常的版本控制流程,Git 都是每位 Python 开发者工具箱中不可或缺的工具。

在这里插入图片描述


1.3 基本命令:Add、Commit、Push

欢迎来到 Git 的三大神器:addcommitpush。这三个命令构成了 Git 工作流的核心,让你的代码历程变得有迹可循。掌握它们,就像掌握了魔法,可以让你的代码安全地保存并与世界共享。

1.3.1 基础知识讲解

  • git add:这个命令可以将你的文件更改添加到暂存区(也称为“索引”),准备下一次提交。如果你有多个文件,可以一次性添加多个文件到暂存区,或者使用 git add . 添加当前目录下的所有更改。
  • git commit:提交命令会将暂存区的更改记录到 Git 仓库中。每次提交都需要一个消息,这个消息应该清晰地描述这次提交做了什么更改,这有助于未来的你或其他开发者理解这次更改的目的。
  • git push:将你的本地提交推送到远程仓库。如果你是和团队一起工作在同一个项目上,这个命令让团队的其他成员看到你的最新更改。

1.3.2 重点案例:为 Python 项目贡献代码

假设你在 GitHub 上找到了一个开源的 Python 项目,你发现了一个可以改进的地方,并决定贡献你的代码。

步骤 1:克隆仓库

首先,克隆远程仓库到你的本地机器:

git clone https://github.com/opensource_project/python_project.git

步骤 2:创建新分支

为了保持主分支的稳定性,最好在一个新的分支上工作:

git checkout -b improve-feature

步骤 3:进行更改并提交

你为 app.py 添加了一些新功能,现在是时候使用 addcommit 命令了:

git add app.py
git commit -m "Add new functionality to app.py"

步骤 4:推送更改

将你的分支推送到 GitHub:

git push origin improve-feature

最后,在 GitHub 上对该分支发起 Pull Request。

1.3.3 拓展案例 1:使用 .gitignore

在你的 Python 项目中,可能会生成一些不需要追踪的文件,比如 __pycache__ 或者一些日志文件。创建一个 .gitignore 文件来告诉 Git 忽略这些文件:

__pycache__/
*.log

这样,当你使用 git add . 命令时,这些文件就不会被添加到暂存区。

1.3.4 拓展案例 2:解决冲突后推送

当你和团队成员同时修改了同一部分代码并尝试推送时,可能会遇到冲突。首先,拉取最新的远程分支更改:

git pull origin main

如果有冲突,Git 会提示你解决。解决冲突后,再次提交并推送你的更改:

git add .
git commit -m "Resolve merge conflict"
git push origin improve-feature

这些案例展示了如何在实际的 Python 项目中应用 addcommitpush 等 Git 命令,无论是个人项目还是团队协作,这些基本操作都是你日常工作流中不可或缺的部分。掌握了它们,就等于拥有了让代码历程井井有条的魔法棒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/375541.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebSocket基础详解

文章目录 前言由来简介优缺点适用场景兼容性 API介绍构造函数实例方法send()close() 实例属性ws.readyState(只读)ws.bufferedAmount(只读)ws.binaryTypeextensions(只读)protocol(只读&#xf…

React+Antd实现表格自动向上滚动

1、效果 2、环境 1、react18 2、antd 4 3、代码实现 原理:创建一个定时器,修改表格ant-table-body的scrollTop属性实现滚动,监听表层的元素div的鼠标移入和移出实现实现鼠标进入元素滚动暂停,移出元素的时候表格滚动继续。 一…

VXLAN网关技术及应用实例详解

1.特性概述 VXLAN是VLAN扩展方案草案,是NVo3中的一种网络虚拟化技术。采用MAC in UDP封装方式,将二层报文用三层协议进行封装,可对二层网络在三层范围进行扩展,同时支持24bits的VNIID ( 16M租户能力),满足…

项目02《游戏-09-开发》Unity3D

基于 项目02《游戏-08-开发》Unity3D , 本次任务是做抽卡界面,获取的卡片增添在背包中,并在背包中可以删除卡片, 首先在Canvas下创建一个空物体,命名为LotteryPanel,作为抽卡界面, …

华视 CVR-100UC 身份证读取 html二次开发模板

python读卡:python读卡 最近小唐应要求要开发一个前端的身份证读卡界面,结果华视CVR-100UC 的读取界面是在是有点,而且怎么调试连官方最基本的启动程序都执行不了。CertReader.ocx 已成功,后面在问询一系列前辈之后,大…

探索设计模式的魅力:设计之美-揭秘设计模式、原则与UML的魔法

设计模式专栏:http://t.csdnimg.cn/U54zu 目录 一、引言 二、设计模式与设计原则 设计模式 设计原则 三、面向对象设计原则 四、UML(统一建模语言) 4.1 UML是什么 UML是一种语言 UML是一种建模语言 UML是一种图形化语言 4.2 UML有什么 4.…

使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息

项目场景: 背景: 使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息 问题描述 问题: $ git pull origin print --allow-unrelated-histories error: Pulling is not possible because you hav…

蓝桥杯刷题day08——完全日期

1、题目描述 如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。 例如:2021年6月5日的各位数字之和为20216516,而16是一个完全平方数,它是4的平方。所以2021年6月5日是一个完全日期。 请问,从200…

Maven详细配置整理

Maven的作用 在Javaweb开发中,需要使用大量的jar包,需要手动去导入,Maven能够自动帮我们导入和配置这个jar包。 对于新手Maven就是用来方便导入jar包的! Maven的核心思想:约定大于配置 有约束,不要去违…

51 -25 Scene as Occupancy 3D占用作为场景表示 论文精读

本文阅读的文章是Scene as Occupancy,介绍了一种将物体表示为3D occupancy的新方法,以描述三维场景,并用于检测、分割和规划。 文章提出了OccNet和OpenOcc两个核心概念。 OccNet 3D占用网络是一种以多视图视觉为中心的方法,通过…

【TCP】高频面试题

前言 在IT行业的求职过程中,传输控制协议(TCP)作为网络通信的核心协议之一,其相关面试题常常出现在各大公司面试中。TCP的稳定性和可靠性是支撑互联网数据传输的基石,因此,对TCP有深入理解不仅能够帮助求职…

【自然语言处理-工具篇】spaCy<1>--介绍及安装指南

目录 前言 安装指南 pip conda spaCy升级 总结 前言 spaCy是一个开源的自然语言处理库,用于处理和分析文本数据。它提供了许多功能,包括分词、词性标注

机器学习系列——(十三)多项式回归

引言 在机器学习领域,线性回归是一种常见且简单的模型。然而,在某些情况下,变量之间的关系并不是线性的,这时候我们就需要使用多项式回归来建模非线性关系。多项式回归通过引入高次项来扩展线性回归模型,从而更好地拟…

6-3、T型加减速单片机程序【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:根据前两节内容,已完成所有计算工作,本节内容介绍具体单片机程序流程及代码 一、程序流程图 根据前两节文章内容可知,T型加减速的关键内容是运动类型的判断以及定时…

网络空间内生安全数学基础(2)——编码信道数学模型

目录 (零)这篇博客在干什么(一)内生安全与香农信道编码定理(二)基本定义(三)编码信道存在定理(三.壹)编码信道存在第一定理(三.贰)编码…

用例图(Use Case Diagram)

一、定义 用例图是从用户角度描述系统功能,是用户所能观察到的系统功能的模型图。 用例图是描述参与者与用例、用例与用例间关系的图。 用例图多用于 静态建模 阶段(主要是业务建模和需求建模)。 二、用例图构成 参与者(Actor)用例(Use Case)关联关系(Associatio…

架设游戏服务器租用价格?腾讯云和阿里云价格对比

游戏服务器租用多少钱一年?1个月游戏服务器费用多少?阿里云游戏服务器26元1个月、腾讯云游戏服务器32元,游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选,可以选择轻量应用服务器和云服务器,阿腾云atengyu…

STM32Cubmax DAC 采集

一、概念 DMA,全称为: Direct Memory Access,即直接存储器访问, DMA 传输将数据从一个 地址空间复制到另外一个地址空间。 当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成。典型的例子就是移动…

jmeter二次开发函数-生成身份证号

代码参考这个 java 随机生成身份证代码 Java的身份证号码工具类 pom文件添加 <dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>5.4.1</version></dependency><d…

在C++的union中使用std::string(非POD对象)的陷阱

struct和union的对比 union最开始是C语言中的关键字&#xff0c;在嵌入式中比较常见&#xff0c;由于嵌入式内存比较稀缺&#xff0c;所以常用union用来节约空间&#xff0c;在其他需要节省内存的地方也可以用到这个关键字&#xff0c;写一个简单程序来说明union的用途 struc…