使用Git进行版本控制

参考:《Python编程从入门到实践》

  • 前言
  • 1、安装、配置 Git
    • 1.1 在Linux系统中安装Git
    • 1.2 在OS X系统中安装Git
    • 1.3 在Windows系统中安装Git
    • 1.4 配置Git
  • 2、创建项目
  • 3、忽略文件
  • 4、初始化仓库
  • 5、检查状态
  • 6、将文件加入到仓库中
  • 7、执行提交
  • 8、查看提交历史

前言

版本控制软件让你能够拍摄处于可行状态的项目的快照。修改项目(如实现新功能)后,如果项目不能正常运行,可恢复到前一个可行状态。
通过使用版本控制软件,你可以无忧无虑地改进项目,不用担心项目因你犯了错而遭到破坏。对大型项目来说,这显得尤其重要,但对于较小的项目,哪怕是只包含一个文件的程序,这也大有裨益。
在本文中,你将学习到如何安装Git,以及如何使用它来对当前开发的程序进行版本控制。Git 是当前最流行的版本控制软件,它包含很多高级工具,可帮助团队协作开发大型项目,但其最基本的功能也非常适合独立开发人员使用。Git通过跟踪对项目中的每个文件的修改来实现版本控制,如果你犯了错,只需恢复到保存的前一个状态即可。
说明:笔者使用的是CentOS 7的64位 Linux环境

1、安装、配置 Git

Git可在所有操作系统上运行,但其安装方法因操作系统而异。

1.1 在Linux系统中安装Git

要在Linux系统中安装Git,执行如下命令:

CentOS:
$ sudo yum install git
Ubuntu:
$ sudo apt-get install git

安装完成后可以通过下述命令查看安装的版本:

git --version

1.2 在OS X系统中安装Git

OS X系统可能自带Git,因此在安装前先执行命令:‘git --version’。如果在输出中查看到具体的版本号,说明系统已经安装了Git;如果看到的是提示安装或升级Git的信息,根据屏幕显示的提示信息操作即可。
也可以访问链接:https://git-scm.com/ ,单击链接Downloads,再点击适合你所用的系统的安装程序。

1.3 在Windows系统中安装Git

访问:https://gitforwindows.org/,单击Download。

1.4 配置Git

Git跟踪谁修改了项目,哪怕参与项目开发的人只有一个。为此,Git需要知道你的的用户名和电子邮件地址。用户必须提供用户名,但是可以使用虚构的电子邮件地址:

$ git config --global user.name "wsy"
$ git config --global user.email "username@example.com"

如果忘了这一步,在首次提交时,Git将提示用户提供这些信息

2、创建项目

  • 在所用系统中创建一个名为 git_practice 的文件夹作为项目目录;
  • 在项目目录下创建空文件:module.py
  • 在项目目录下创建一个简单的python程序:hello_world.py 作为需要跟踪的项目文件,输入以下内容:
import moduleprint('Hello Git world!')

注:这里之所以需要创建一个空的module.py文件是因为在程序hello_world.py要引用他,这样在程序运行后就会生成一个__pycache__文件夹,这个文件夹我们后续不需要让Git跟踪它,所以要对它做忽略操作。

关于__pycache__文件夹:python解释器会对 *.py 文件进行编译,并且将编译结果保存到__pycache__目录下。在下次执行工程时,如果发现这个 *.py 没有被修改过,那么就会跳过编译这一步,直接执行在__pycache__中已经完成编译的.pyc文件。而且,只有被导入的module才会生成对应的 *.pyc文件,生成的 *.pyc 文件的命名规则是: ‘module.interpreter_version.pyc’。这样做的好处是,如果需要执行比较大的工程文件,那么会节约很多时间。

整个创建流程如下:
在这里插入图片描述

3、忽略文件

上面说过,扩展名为 .pyc 的文件是根据 .py 文件自动生成的,因此无需让Git跟踪它们。这些文件存储在 pycache 目录中。

为了让Git忽略__pycache__目录,执行下属操作:

  • 在项目目录下创建一个名为 .gitignore 的特殊文件,该文件以句点打头,且没有扩展名;
  • .gitignore 中添加下面一行内容:
__pycache__/

这让Git忽略__pycache__目录中的所有文件。使用 .gitignore 可避免项目混乱,开发起来更容易。

注:如果你使用的编译器是 python2.7,请将这行内容改为 *.pyc。因为python2.7不会自动创建目录 pycache,它将每个.pyc文件都存储在相应.py文件所在目录中。其中的星号(*)让Git忽略所有扩展名为.pyc的文件。

流程如下:
在这里插入图片描述

4、初始化仓库

至此,我们创建了一个目录,其中包含一个python文件和一个 .gitignore 文件,下面可以初始化一个Git仓库了。为此,打开一个终端窗口,切换到文件夹 git_practice,并执行如下命令:

git init

如下:
在这里插入图片描述输出表明,Git在git_practice中初始化了一个空仓库。仓库里是程序中被Git主动跟踪的一组文件。Git用来管理仓库的文件都存储在隐藏的 *.git/中,用户无需与该目录打交道,但是千万不能删除该目录,否则将丢失项目的所有历史记录

5、检查状态

执行其它操作前,先执行下述命令来看一下项目的状态:

git status

在这里插入图片描述
在Git中,分支(master)是项目的一个版本。从上述输出可以看出,目前项目位于分支master上。用户每次查看项目状态时,输出都将指出你位于分支master上。接下来的输出表明,我们将进行初始提交。提交是项目在特定时间点的快照。
接着,Git指出了项目中未被跟踪的文件,因为到目前为止我们还没有告诉它要跟踪哪些文件。
最后,输出提示我们“提交为空,但是存在尚未跟踪的文件”,并告知如何建立跟踪,即使用 git add。
所以下面的任务就是将文件加入到仓库中。

6、将文件加入到仓库中

下面将上述指出的文件加入到仓库中,并再次检查状态。
可以通过下述两种方法进行添加:

1、逐个文件添加
git add .gitignore
git add hello_world.py
git add module.py2、整体添加
git add .

命令 git add . 将项目中未被跟踪的所有文件都加入到仓库中,不需要一个文件一个文件的添加,这对于改动文件较多的项目来说很方便。它不提交这些文件,而只是让Git开始关注它们。下面我们再检查项目状态时,发现Git找出了需要提交的一些修改,且标出了新添加到仓库中的文件。
也可以理解为,通过 git add 将文件从工作目录添加到了一个暂存区
在这里插入图片描述

7、执行提交

下面开始执行第一次提交,提交结束后再次查看项目状态,如下:
在这里插入图片描述我们执行命令:commit -m "Started project." 以拍摄项目的快照。其中,标志 -m 让Git将接下来的消息(Started project.)记录到项目的历史记录中(也可以把这个消息当成是本次提交的一个title,用于辨识)。输出表明我们在分支 master上,且有3个文件被修改了。
现在我们再检查状态时,发现我们在分支master上,且工作目录是干净的。这是用户每次提交项目的可行状态时都希望看到的结果。如果显示的消息不是这样的,请仔细阅读,很可能是在提交前忘记了添加文件。

8、查看提交历史

Git记录所有的项目提交,通过命令 git log即可查看提交历史,下面来看一下提交历史:
在这里插入图片描述用户每次提交时,Git都会生成一个包含40字符的独一无二的引用ID,它记录提交是谁执行的、提交的时间以及提交时指定的消息。并非在任何情况下你都需要所有的这些信息,因此Git提供了一个选项,让你能够打印提交历史条目更加简单的版本:
在这里插入图片描述标志 --pretty=oneline指定显示两项最重要的信息:提交的引用ID以及为提交记录的消息(title)。

未完待续。。。

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

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

相关文章

C语言 预处理 + 条件编译宏 + 井号运算符

预处理阶段任务 预处理指令 条件编译宏 条件编译宏的作用在于根据编译时的条件进行代码的选择性编译,从而实现不同环境、不同配置或不同功能的编译版本。 这可以用于实现调试模式和发布模式的切换,平台适配,以及选择性地编译不同的功能模块等…

Git merge 与 Git rebase 与 Git fetch

Git merge 与 Git rebase 看这个图就行了 git merge、git rebase 和 git fetch 是 Git 中的三个不同的命令,它们分别用于不同的目的。以下是它们的主要区别: git merge(合并): 用途: 用于将一个分支的更改…

基于hadoop下的spark安装

目录 简介 安装准备 spark安装 配置文件配置 简介 Spark主要⽤于⼤数据的并⾏计算,⽽Hadoop在企业主要⽤于⼤数据的存储(⽐如HDFS、Hive和HBase 等),以及资源调度(Yarn)。但是也有很多公司也在使⽤MR2进…

【Spring教程24】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC入门案例代码示例

目录 1:创建Maven项目,并导入对应的jar包2:创建控制器类3:创建配置类4:创建Tomcat的Servlet容器配置类5:配置Tomcat环境6:启动运行项目7:浏览器访问8:知识点总结 欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现&#xff0…

【数学建模】《实战数学建模:例题与讲解》第八讲-回归分析(含Matlab代码)

【数学建模】《实战数学建模:例题与讲解》第八讲-回归分析(含Matlab代码) 回归分析基本概念经典多元线性回归(MLR)主成分回归(PCR)偏最小二乘回归(PLS)建模过程应用和优势…

2023年12月11日-12月17日(项目需求+ue5底层渲染)

可以试试每小时项目需求内容ue5底层渲染交替进行。 周一: 6:11–,ue5底层渲染02A15

C# List类常用操作 之 查找

// // // 作者:鸟哥 // // email:xiaoniao2003gmail.com // // using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization.Formatters;class Program {class Student{internal string Name;internal int Ag…

Pandas实践_pandas基础

文章目录 一、文件的读取和写入1.文件读取2.数据写入 二、基本数据结构1.Series2.DataFrame 三、常用基本函数1.汇总函数2.特征统计函数3.唯一值函数4.替换函数5.排序函数6.apply方法 四、窗口对象1.滑窗对象2.扩张窗口 一、文件的读取和写入 1.文件读取 pandas可以读取的文件…

rust宏(macro)详解

前言 rust 学习曲线非常陡峭,但是基本语法也还算挺好理解,自动内存管理有点类似智能指针,基本看一下语法入门就可以大概理解,但是唯独宏很难理解,语法非常晦涩。但是功能非常强大。声明宏类似于c语言的宏处理&#xf…

docker-ubuntu中基于keepalived+niginx模拟主从热备完整过程

一、环境准备 🔗在Ubuntu中安装docker 二、主机 1、环境搭建 1.1 镜像拉取 docker pull ubuntu:16.041.2 创建网桥 docker network create -dbridge --subnet192.168.126.0/24 br11.3 启动容器 docker run -it --name ubuntu-1 --privileged -v /home/vac/l…

为 Compose MultiPlatform 添加 C/C++ 支持(2):在 jvm 平台使用 jni 实现桌面端与 C/C++ 互操作

前言 在上篇文章中我们已经介绍了实现 Compose MultiPlatform 对 C/C 互操作的基本思路。 并且先介绍了在 kotlin native 平台使用 cinterop 实现与 C/C 的互操作。 今天这篇文章将补充在 jvm 平台使用 jni。 在 Compose MultiPlatform 中,使用 jvm 平台的是 An…

Kubernetes实战(十)-升级k8s集群

1 Kubernetes(k8s) 集群升级过程 Kubernetes 使用 kubeadm 工具来管理集群组件的升级。在集群节点层面,升级 Kubernetes(k8s)集群的过程可以分为以下几个步骤: 1)检查当前环境和配置是否满足升级要求。 2)升级master主节点&…

如何一个例子玩明白GIT

一个例子玩明白GIT GIT的介绍和教程五花八门,但实际需要用的就是建仓、推送、拉取等操作,这儿咱可以通过一个例子熟悉这些操作,一次性搞定GIT的使用方法学习。下面这个例子的内容是内容是建立初始版本库,然后将数据复制到 "远…

轻量封装WebGPU渲染系统示例<45>- 材质组装流水线(MaterialPipeline)灯光、阴影、雾(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MaterialPipelineFog.ts 当前示例运行效果: 此示例基于此渲染系统实现,当前示例TypeScript源码如下: export class MaterialPipelineFog {pr…

数组创建方法

数组的创建 1.let a[] 2.let anew Array(5) 3.let anew Array(1,2,3) 4.let a[1,2,3] 创建数组是空还是有值是以上四种写法。但是如果没给值的变量是undefined,再a[0]找不到这种变量的。所以当找某一个数需要已经是数组内存。不想给值可以给空数组。只要是数组…

MEMS制造的基本工艺介绍——晶圆键合

晶圆键合是一种晶圆级封装技术,用于制造微机电系统 (MEMS)、纳米机电系统 (NEMS)、微电子学和光电子学,确保机械稳定和气密密封。用于 MEMS/NEMS 的晶圆直径范围为 100 毫米至 200 毫米(4 英寸至 8 英寸),用于生产微电…

【重点】【环链表入口】142. 环形链表 II

题目 public class Solution {public ListNode detectCycle(ListNode head) {if (head null || head.next null) {return null;}ListNode slow head, fast head;while (fast ! null && fast.next ! null) {slow slow.next;fast fast.next.next;if (slow fast) …

SQL语句---更新数据

介绍 使用sql语句更新数据。 命令 update 表名 set 字段1值1[,字段2值2] [where 条件表达式];[](方括号)内的表是表示可选。 例子 将a表id值等于1的数据的名称改为666 update a set name666 where id1;

2023-12-05 Qt学习总结7

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言二十 QTcpSocket QTcpServer网络库服务端代码:客户端代码 二十一 QProcess进程类二十二 QThread线程总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 二十 QTcpSocket QTcpServer网络库 QTcpSocket和…

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略

目录 一、理论 1.开发测试运维环境 二、实验 1.Nexus制品晋级策略 一、理论 1.开发测试运维环境 &#xff08;1&#xff09;环境 1&#xff09;持续集成开发环境&#xff08;DEV: Development Environment&#xff09; 直接通过源代码编译打包&#xff0c;其会跑单元测试…