《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 命令,无论是个人项目还是团队协作,这些基本操作都是你日常工作流中不可或缺的部分。掌握了它们,就等于拥有了让代码历程井井有条的魔法棒。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux大集合

Linux Linux是什么? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、 支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和 64位硬件。 Linux内核 是一个Linux系统…

51单片机之数码管显示表白数字篇

朝菌不知晦朔 蟪蛄不知春秋 眼界决定境界 CSDN 请求进入专栏 是否进入《51单片机专栏》? 确定 目录 数码管的简介 数码管引脚定义 数码管的原理图 74HC245 代码实现 静态数码管的显示 动态数码管的显示 数码管实现表白画面 数码管的简介 L…

力扣面试题 05.06. 整数转换(位运算)

Problem: 面试题 05.06. 整数转换 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.通过将两个数进行异或操作求出两个数中不同的位(不同的位异或后为二进制1); 2.统计异或后不同的位的个数(即异或后二进制为1的个数) 复杂度 时间复杂度: O ( 1 ) O(1) O(1) 空间…

挑战杯 python+深度学习+opencv实现植物识别算法系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:4分 🧿 更多…

2.3_9 吸烟者问题

2.3_9 吸烟者问题 问题描述 问题分析 假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草、第二个拥有纸…

彩虹系统7.0免授权+精美WAP端模板源码

最低配置环境 PHP7.2 1、上传源码到网站根目录,导入数据库文件 2、修改数据库配置文件:/config.php 3、后台:/admin 账号: 4、前台用户:123456 密码:1234561

目标检测:2如何生成自己的数据集

目录 1. 数据采集 2. 图像标注 3. 开源已标记数据集 4. 数据集划分 参考: 1. 数据采集 数据采集是深度学习和人工智能任务中至关重要的一步,它为模型提供了必要的训练样本和测试数据。在实际应用中,数据采集的方法多种多样,每…

C语言--------指针(1)

0.指针&指针变量 32位平台,指针变量是4个字节(32bit/84)--------x86 64位平台,指针变量是8个字节(64bit/88)--------x64 编号指针地址;我们平常讲的p是指针就是说p是一个指针变量; ************只要…

VR全景技术可以应用在哪些行业,VR全景技术有哪些优势

引言: VR全景技术(Virtual Reality Panorama Technology)是一种以虚拟现实技术为基础,通过360度全景影像、立体声音、交互元素等手段,创造出沉浸式的虚拟现实环境。该技术不仅在娱乐领域有着广泛应用,还可…

操作系统透视:从历史沿革到现代应用,剖析Linux与网站服务架构

目录 操作系统 windows macos Linux 服务器搭建网站 关于解释器的流程 curl -I命令 名词解释 dos bash/terminal,(终端) nginx/apache(Linux平台下的) iis(Windows平台下的) GUI(图形化管理接口&#xff…

基于SpringBoot和PostGIS的震中影响范围可视化实践

目录 前言 一、基础数据 1、地震基础信息 2、全国行政村 二、Java后台服务设计 1、实体类设计 2、Mapper类设计 3、控制器设计 三、前端展示 1、初始化图例 2、震中位置及影响范围标记 3、行政村点查询及标记 总结 前言 地震等自然灾害目前还是依然不能进行准确的预…

日志报错 git -c dif.mnemonicprefix=false -c core.guotepath=false 解决方法

前言: 在进行下面操作前,必须确保,你是否安装了Git。 查看Git 在命令行窗口中输入`git --version`: 如果这个命令成功显示了Git的版本信息,这表明Git已经被安装。 1. 使用Sourcetree SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端…

vite项目配置根据不同的打包环境使用不同的请求路径VITE_BASE_URL,包括报错解决

vite环境配置可以看官方文档:环境变量和模式 | Vite 官方中文文档 创建环境配置文件 在项目根目录下面创建.env和.env.production文件,.env是开发环境使用的,.env.production是生产环境使用的。 .env文件: # 基本环境 VITE_APP…

MySQL篇----第七篇

系列文章目录 文章目录 系列文章目录前言一、水平分区二、分库分表之后,id 主键如何处理三、存储过程(特定功能的 SQL 语句集)前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你…

将xyz格式的GRACE数据转成geotiff格式

我们需要将xyz格式的文件转成geotiff便于成图,或者geotiff转成xyz用于数据运算,下面介绍如何实现这一操作,采用GMT和matlab两种方法。 1.GMT转换 我们先准备一个xyz文件,这里是一个降水文件。在gmt中采用以下的语句实现xyz转grd…

DevOps落地笔记-20|软件质量:决定系统成功的关键

上一课时介绍通过提高工程效率来提高价值交付效率,从而提高企业对市场的响应速度。在提高响应速度的同时,也不能降低软件的质量,这就是所谓的“保质保量”。具备高质量软件,高效率的企业走得更快更远。相反,低劣的软件…

Linux的进程信号

注意:首先需要提醒一个事情,本节提及的进程信号和下节的信号量没有任何关系,请您区分对待。 1.信号概念 1.1.生活中的信号 我们在生活中通过体验现实,记忆了一些信号和对应的处理动作,这意味着信号有以下相关的特点&…

Pandas文本数据处理大全:类型判断、空白字符处理、拆分与连接【第67篇—python:文本数据】

文章目录 Pandas文本数据处理大全:类型判断、空白字符处理、拆分与连接1. 判断文本数据类型2. 去除空白字符3. 文本数据拆分4. 文本数据连接5. 文本数据替换6. 文本数据匹配与提取7. 文本数据的大小写转换8. 文本数据的长度计算9. 文本数据的排序10. 文本数据的分组…

大数据企业应用场景分析

目录 一、企业分析 1.1 企业领域维度分析 1.2 技术服务型维度分析 1.3 细分领域维度分析 二、大数据应用场景 2.1 数据分析 2.2 智能推荐 2.3 产品/流程优化 2.4 异常监测 2.5 智能管理 2.6 人工智能和机器学习 三、总结 前言:想讲清楚大数据应用对企业…

(4)【Python数据分析进阶】Machine-Learning模型与算法应用-回归、分类模型汇总

线性回归、逻辑回归算法应用请参考: https://codeknight.blog.csdn.net/article/details/135693621https://codeknight.blog.csdn.net/article/details/135693621本篇主要介绍决策树、随机森林、KNN、SVM、Bayes等有监督算法以及无监督的聚类算法和应用PCA对数据进行降维的算法…