《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.mzph.cn/news/671709.shtml

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

相关文章

代码随想录算法训练营第41天 | 343.整数拆分 96.不同的二叉搜索树

整数拆分 dp数组的含义:dp[i] 表示将 i 拆分所能得到的最大乘积。递推公式:dp[i] max(dp[i], max(j * (i - j), j * dp[i - j]))。我们对 j 从1开始遍历,检验不同的拆分方式能产生的最大乘积。对于拆分方式的选择,要么拆成 j 和 …

Win32 SDK Gui编程系列之--ListView自绘OwnerDraw(续)

通过所有者绘制的列表视图(2) 所有者绘制列表视图的基础已在前一页中说明。本页将展示如何在所有者绘制列表视图中显示数据库表数据。 1、访问日志 正如在另一个页面中所述,本网站的访问日志目前是通过SQLite3数据库管理的。 以下是上述程序执行的结果。为…

【MATLAB】使用随机森林在回归预测任务中进行特征选择(深度学习的数据集处理)

1.随机森林在神经网络的应用 当使用随机森林进行特征选择时,算法能够为每个特征提供一个重要性得分,从而帮助识别对目标变量预测最具影响力的特征。这有助于简化模型并提高其泛化能力,减少过拟合的风险,并且可以加快模型训练和推理…

视频无损放大修复工具Topaz Video AI 新手入门教程

想要自学Topaz Video AI ?Topaz Video AI 如何使用?这里给大家带来了视频无损放大修复工具Topaz Video AI 新手入门教程,快来看看吧! 下载:Topaz Video AI for mac 导入您的文件 有两种方法可以将文件导入 Topaz Vid…

echarts 一条折线图上显示不同颜色

文档树懒学堂&#xff1a;ECharts visualMap 代码实例及对应注释 - 树懒学堂 封装的echarts 组件代码&#xff1a; <template> <div :style"{ height: 100% }"> <div class"foldLine" ref"foldLine" :style"{ width: width…

【大数据】Flink on YARN,如何确定 TaskManager 数

Flink on YARN&#xff0c;如何确定 TaskManager 数 1.问题2.并行度&#xff08;Parallelism&#xff09;3.任务槽&#xff08;Task Slot&#xff09;4.确定 TaskManager 数 1.问题 在 Flink 1.5 Release Notes 中&#xff0c;有这样一段话&#xff0c;直接上截图。 这说明从 …

centos7 安装mysql8

下载mysql wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar解压安装 tar xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar yum -y localinstall *.rpm初始化 mysqld --initialize --usermysql需要选择mysql用户&#xff0c;否则可…

Java基于微信小程序的医院核酸检测服务系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

程序员的数字化工作台:理解不关机背后的逻辑与需求

目录 程序员为什么不喜欢关电脑&#xff1f; 电脑对程序员的重要性&#xff1a; 工作流程与需求&#xff1a; 数据安全与备份&#xff1a; 即时性与响应&#xff1a; 个人习惯等方面&#xff1a; 程序员为什么不喜欢关电脑&#xff1f; 电脑对程序员的重要性&#xff1a;…

MySQL数据引擎、建库及账号管理

目录 一、MySQL数据库引擎 1.1.MySQL常见数据库引擎 1.InnoDB(MySQL默认引擎) 2.MyISAM 3.MEMORY&#xff08;Heap&#xff09; 1.2.存储引擎查看 二、建库 1.默认数据库介绍 2.建库 3.查看数据库 4.删除数据库 三、账号管理 1.创建用户 1.创建用户并设置登陆密码…

使用Qt创建项目 Qt中输出内容到控制台 设置窗口大小和窗口标题 Qt查看说明文档

按windows键&#xff0c;找到Qt Creator &#xff0c;打开 一.创建带模板的项目 新建项目 设置项目路径QMainWindow是带工具栏的窗口。 QWidget是无工具栏的窗口。 QDuakig是对话框窗口。创建好的项目如下&#xff1a; #include "widget.h"// 构造函数&#xff…

03 动力云客项目之登录功能后端实现

创建项目 使用Spring initializr初始化项目 老师讲的是3.2.0, 但小版本之间问题应该不大.

Flutter学习(八)Flutter_Boost接入

背景 基于安卓的原生项目&#xff0c;进行Flutter的接入&#xff0c;进行混合开发。 参考链接 官方地址&#xff1a;link fullter_boost配置&#xff1a;link git代理配置&#xff1a;link kotlin语法集成&#xff1a;link 混合开发的坑&#xff1a;link 开发环境 as4…

JavaScript基础第二天

JavaScript基础第二天 今天我们学习if分支语句、三元表达式和switch-case语句。 1. if分支语句 1.1 语法 if (条件表达式){// 满足条件要执行的语句 } else {// 不满足条件要执行的语句 }if中的内容如果为true&#xff0c;就执行大括号的代码块&#xff0c;如果为false执行…

逆向工程:揭开科技神秘面纱的艺术

在当今这个科技飞速发展的时代&#xff0c;我们每天都在与各种电子产品、软件应用打交道。然而&#xff0c;你是否想过&#xff0c;这些看似复杂的高科技产品是如何被创造出来的&#xff1f;今天&#xff0c;我们就来探讨一下逆向工程这一神秘而又令人着迷的领域。 一、什么是…

ChatGPT学习第一周

&#x1f4d6; 学习目标 掌握ChatGPT基础知识 理解ChatGPT的基本功能和工作原理。认识到ChatGPT在日常生活和业务中的潜在应用。 了解AI和机器学习的基本概念 获取人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;的初步了解。理解这些技术是如何支撑…

【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (上篇)

在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 &#xff08;上篇&#xff09; 项目介绍 YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代&#xff0c;旨在实时提供高速、高精度的结果&#xff0c;是世界上最受欢迎的视觉人工智能模型&#xff0c;代表了Ult…

【Unity游戏设计】跳一跳Day1

一、创建场景 Assets/Secnes:GameAssets创建游戏资源Prefabs存放预制体,Scripts脚本,Sounds声音,Textures图片资源,Materiais材质资源分类存放意识 二、场景建模 注意&#xff1a;alt鼠标左键切换视角 视角与摄像机视角保持一致&#xff1a;Main CameraGameObjectAlign Vie…

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

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

百卓Smart管理平台 uploadfile.php 文件上传漏洞复现(CVE-2024-0939)

0x01 产品简介 百卓Smart管理平台是北京百卓网络技术有限公司(以下简称百卓网络)的一款安全网关产品,是一家致力于构建下一代安全互联网的高科技企业。 0x02 漏洞概述 百卓Smart管理平台 uploadfile.php 接口存在任意文件上传漏洞。未经身份验证的攻击者可以利用此漏洞上传…