项目管理利器 Git

news/2024/5/22 5:55:13

一、序言

今天聊聊 Git。

二、开发的问题

  1. 在开发项目时,我们的代码都是直接放在本地的机器上的。如果本地机器出现了问题,怎么办?
  2. 在企业中,开发项目都是团队协作,一个团队共同维护一个项目该如何处理?
  3. 团队共同维护一个项目,大概率会发生冲突(例如:A 与 B 都改了同一行代码)该如何解决?
  4. 项目是不断演进的,但是新版本有问题我们需要回溯到某个时间节点的某个版本呢?

三、什么是版本控制

版本控制(Version Control System,简称 VCS)是一种管理文件和代码变化的系统,它允许开发者跟踪文件的修改、恢复先前的版本以及比较不同版本之间的差异。版本控制系统记录了文件的历史变更,使得开发者可以方便地回溯到特定时间点的代码状态,从而更好地管理项目的发展历程。
版本控制系统通常包括以下核心功能:

  1. 版本追踪:记录文件的每一次修改,包括修改内容、修改者和修改时间等信息。
  2. 版本恢复:允许开发者在需要时回溯到历史版本,恢复特定时间点的文件状态。
  3. 分支管理:支持创建分支,使得开发者可以并行开发不同的功能或修复不同的 BUG,而不会影响主干代码。
  4. 代码合并:允许将不同分支或不同版本的代码合并到一起,确保代码的一致性和完整性。
  5. 冲突解决:当多个开发者同时修改了同一个文件,版本控制系统可以帮助解决代码冲突,确保修改的有效合并。
  6. 团队协作:提供多用户协作的支持,使得团队成员可以共享和管理代码的变更。

常见的版本控制系统包括:

  1. Git:目前最流行的分布式版本控制系统,用于跟踪文件的变化并协作开发项目。
  2. Subversion(SVN):集中式版本控制系统,类似于 Git,但与 Git 不同的是它使用集中式的存储库来管理文件版本。
  3. Mercurial:另一个分布式版本控制系统,与 Git 类似,但使用起来更简单。
  4. Perforce:用于大型项目和团队的商业版本控制系统,具有高性能和可定制性。
  5. Team Foundation Version Control(TFVC):Microsoft 开发的版本控制系统,主要用于 Visual Studio Team Services(VSTS)和 Team Foundation Server(TFS)。

它们在实现版本控制的基本功能上有所不同,但都能满足开发者对版本管理的需求。版本控制系统在软件开发过程中扮演着重要的角色,有助于提高团队的协作效率、保证代码的质量和可维护性。

四、什么是 Git

Git 是一个分布式版本控制系统,它是由 Linux 之父 Linus Torvalds 开发的,用于管理软件开发过程中的源代码版本。它的主要功能包括跟踪文件的变化、记录文件的历史版本、协作开发、代码审查等。Git 的设计目标是速度、简单性、非线性开发(允许同时进行多个分支的开发)和完全分布式。
Git 是一种非常强大、灵活且广泛应用的版本控制系统,对于任何需要管理代码变更的项目都是非常有用的工具。Git 允许开发者在一个项目中进行版本控制。它可以帮助开发团队在多人协作开发时更好地管理代码,并且可以在不同的开发环境之间轻松地共享和同步代码。Git 也是开源的,因此任何人都可以免费使用它,并且它拥有庞大的社区支持,有许多优秀的工具和扩展可以与之配合使用。

五、Git 工作流程

未命名文件.png

  1. 开发人员第一次使用 git clone 命令从远程库克隆项目到本地库。如果本地已经存在该项目则使用 git pull 命令更新本地的项目
  2. 开发人员在本机的工作区打开本地库中的项目进行开发
  3. 工作区的项目有变更之后,使用 git add 命令将工作区的变更放入暂存区
  4. 暂存区有新内容之后,使用 git commit 命令将暂存区内容提交到本地库
  5. 此时,本地项目的最新版本已经保存到了本地库,但是远程库还是旧版本
  6. 使用 git push 命令将本地库的最新变更提交到远程库

每一个开发人员都可以通过上述的流程拉取项目,开发项目,推送最新的代码,从而实现了团队开发项目。

六、Git 常用命令

  1. 初始化一个新的 Git 本地仓库

    git init
    
  2. 从远程仓库克隆一个仓库到本地

    git clone [url]
    
  3. 将文件添加到暂存区

    git add [file]
    
  4. 将所有修改过的文件添加到暂存区

    git add .
    
  5. 将暂存区的文件提交到本地仓库,并附上提交信息

    git commit -m "[message]"
    
  6. 显示工作目录的状态,显示已暂存和未暂存的改动

    git status
    
  7. 显示工作目录中当前文件和暂存区域的差异

    git diff
    
  8. 显示已暂存的内容与上次提交之间的差异

    git diff --cached
    
  9. 显示提交日志

    git log
    
  10. 列出本地分支

    git branch
    
  11. 创建一个新的分支

    git branch [branch_name]
    
  12. 切换到指定分支

    git checkout [branch_name]
    
  13. 将指定分支合并到当前分支

    git merge [branch_name]
    
  14. 拉取远程仓库的更新

    git pull
    
  15. 将本地提交推送到远程仓库

    git push
    
  16. 查看远程仓库信息

    git remote -v
    
  17. 添加一个新的远程仓库

    git remote add [name] [url]
    
  18. 移除一个远程仓库

    git remote remove [name]
    
  19. 从暂存区中移除指定文件,但保留在工作区中的修改

    git reset [file]
    
  20. 重置暂存区和工作目录,与最新提交保持一致

    git reset --hard
    
  21. 将当前的修改暂存起来,并将工作区恢复到上一次提交时的状态

    git stash
    
  22. 列出所有标签

    git tag
    
  23. 创建一个新的标签

    git tag [tag_name]
    
  24. 切换到指定标签

    git checkout [tag_name]
    
  25. 删除文件,并将这次删除放入暂存区

    git rm [file]
    

http://www.mrgr.cn/p/40281177

相关文章

试用阿里云GPU服务器进行深度学习模型训练

试用阿里云GPU服务器进行深度学习模型训练 最近在用PyTorch时发现在本地训练模型速度一言难尽,然后发现阿里云可以白嫖gpu服务器,只要没有申请过PAI-DSW资源的新老用户都可以申请5000CU*H的免费额度,三个月内有效。 阿里云免费试用活动页面 一、申请试用并创建实例点击试用,…

pdf做批注编辑工具 最新pdf reader pro3.3.1.0激活版

PDF Reader Pro是一款功能强大的PDF阅读和编辑工具。它提供了多种工具和功能,帮助用户对PDF文档进行浏览、注释、编辑、转换和签名等操作。以下是PDF Reader Pro的一些主要特色: 最新pdf reader pro3.3.1.0激活版下载 多种查看模式:PDF Reade…

结对编程——100以内加减乘除

前言 按照结对编程的原则,我(2252627)和我的合作伙伴(2252616)两人进行了结对编程,我们共同完成的项目的是小学的四则运算,通过随机生成四则运算题目,供学生答题,并在学生提交答案后进行自动评定,返回正误。经过讨论,我们采用了C++语言作为开发语言,并选取Dev C++5…

C语言学习笔记之指针(二)

指针基础知识:C语言学习笔记之指针(一)-CSDN博客 目录 字符指针 代码分析 指针数组 数组指针 函数指针 代码分析(出自《C陷阱和缺陷》) 函数指针数组 指向函数指针数组的指针 回调函数 qsort() 字符指针 一…

实验一原型设计——不背单词app

一、实验题目:原型设计 二、实验目的:掌握产品原型设计方法和相应工具使用。 三、实验要求 (1)对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点(至少3条)。 1.墨刀 适用领域:手机端项目。 优点: 简单易用:墨刀提供了直观的界面和简单的操作,适…

Axure RP中的相关概念及高保真原型构建方法

1 Axure RP中概念介绍 对于构建高保真原型来说,需要知道事件(Event)、Case、Action等概念。Axure RP中给出这些概念,是为了方便原型的构建,尤其是高保真原型的构建。 事件(Event)是附着于控件…

Python-数字取证秘籍(二)

Python 数字取证秘籍(二)原文:zh.annas-archive.org/md5/941c711b36df2129e5f7d215d3712f03 译者:飞龙 协议:CC BY-NC-SA 4.0第四章:提取嵌入式元数据配方 本章涵盖以下配方:提取音频和视频元数据大局观挖掘 PDF 元数据审查可执行文件元数据阅读办公文档元数据将我们的元…

Python-数字取证秘籍(三)

Python 数字取证秘籍(三)原文:zh.annas-archive.org/md5/941c711b36df2129e5f7d215d3712f03 译者:飞龙 协议:CC BY-NC-SA 4.0第六章:阅读电子邮件和获取名称的配方 本章涵盖了以下配方:解析 EML 文件查看 MSG 文件订购外卖盒子里有什么?解析 PST 和 OST 邮箱介绍 一旦计…

【Linux系统编程】第四弹---基本指令(二)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、echo指令 2、cat指令 3、more指令 4、less指令 4、head指令 5、tail指令 6、时间相关的指令 7、cal指令 8、find指…

Python-并行编程秘籍(二)

Python 并行编程秘籍(二)原文:zh.annas-archive.org/md5/e472b7edae31215ac8e4e5f1e5748012 译者:飞龙 协议:CC BY-NC-SA 4.0第三章:基于进程的并行处理 在上一章中,我们学习了如何使用线程来实现并发应用程序。本章将讨论我们在第一章中介绍的基于进程的方法,使用并行…

Learning-Scrapy-中文版(一)

Learning Scrapy 中文版(一) 零、序言序言 第 1 章 Scrapy 介绍 第 2 章 理解 HTML 和 XPath 第 3 章 爬虫基础 第 4 章 从 Scrapy 到移动应用 第 5 章 快速构建爬虫 第 6 章 Scrapinghub 部署 第 7 章 配置和管理 第 8 章 Scrapy 编程 第 9 章 使用 Pipeline 第 10 章 理解 …

Learning-Scrapy-中文版(三)

Learning Scrapy 中文版(三) 八、Scrapy 编程 到目前为止,我们创建爬虫的目的是抓取数据,并提取信息。除了爬虫,scrapy 可以让我们微调它的功能。例如,你会经常碰到以下状况: 你在同一个项目的爬虫间复制粘贴了很多代码。重复的代码更多是关于处理数据,而不是关于数据源…

Learning-Scrapy-中文版(二)

Learning Scrapy 中文版(二) 三、爬虫基础 本章非常重要,你可能需要读几遍,或是从中查找解决问题的方法。我们会从如何安装 Scrapy 讲起,然后在案例中讲解如何编写爬虫。开始之前,说几个注意事项。 因为我们马上要进入有趣的编程部分,使用本书中的代码段会十分重要。当你…

Android 车载应用开发概述

前言 介绍 Android 车载应用开发 文章目录 前言一、Android Automotive OS 概述二、Android Automotive OS 架构三、常见的车载应用1、系统应用1)SystemUI是什么开发工作 2)Launcher是什么开发工作 3)Settings是什么开发工作 4)多…

m基于yolov2深度学习的细胞检测系统matlab仿真,带GUI操作界面

1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要基于YOLOv2的细胞检测系统是一种利用深度学习技术,特别是卷积神经网络(CNN),对显微镜图像中的细胞进行自动定位和识别的计算机视觉应用。YOLO(You Only Look Once)是一种单阶段的目标检测算法,其第二版…

数模 初见数建

文章目录 初见数学建模1.1 数学建模是什么1.2 数学建模的概述1.3 如何学习数学建模---分模块化1.4 数学建模前提了解1.5 数学建模的六个步骤1.6 如何备战建模比赛1.7 数学建模赛题类型1.8 数学建模算法体系概述 初见数学建模 1.1 数学建模是什么 1.原型与模型 原型&#xff…

使用FastDDS编译IDL文件

1.安装FastDDS环境 Ubuntu22.04 1.1安装依赖的软件 sudo apt-get update //基础工具安装 sudo apt install cmake g python3-pip wget git //Asio 是一个用于网络和低级 I/O 编程的跨平台C库,它提供了一致的 异步模型。 TinyXML2是一个简单,小巧&…

audition 音频 声音 变慢 减速 增加响度 增大音量

audition 音频 声音 变慢 减速 增加响度 增大音量 我这里audition版本是cs6 减速减速的 那个算法 选右边的选项,要不效果不好 减速的 那个算法 选右边的选项,要不效果不好 减速的 那个算法 选右边的选项,要不效果不好增大响度 显示窗口完工~-------------------------------…

4-02. 实现跟随游戏时间触发切换场景光效

修改 Settings修改 TimeManager修改 EventHandler修改 TimeManager修改 LightManager修改 LightControl修改 LightManager修改 LightControl修改 TimeManager给门灯添加 LightControl添加 LightPattern并把它拖动给 Light2D下面那个灯也要拷贝相同的 Light Control 组件 项目相…

Day91:API攻防-接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

目录 API分类特征-SOAP&OpenAPI&RESTful API分类特征 API常见漏洞 API检测流程 API检测项目-Postman&APIKit&XRAY 工具自动化-SOAP - WSDL Postman 联动burpxray APIKit插件(可联动xray) 工具自动化-OpenApi - Swagger Postman 联动burpxray APIKit…