项目管理利器 Git

ops/2024/10/21 10:18:56/

一、序言

今天聊聊 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.ppmy.cn/ops/4855.html

相关文章

HTML快速入门

HTML简介 HTML(超文本标记语言)是一种用于创建网页和Web应用程序的标记语言。它由一系列标签组成,每个标签通过尖括号来定义,并用于标记文本、图像、链接和其他内容。HTML标签描述了网页中的信息结构和布局,并定义了文…

Linux中进程和计划任务

一.程序 1.什么是程序 (1)是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具 (2)用于描述进程要完成的功能,是控制进程执行的指令集 二.进程 1.什么是进程…

vue 3 中i18n字符串 转义问题

文章目录 前言原因分析解决方案1. 特殊字符的转义2. 占位符与变量插值3. HTML标记4. 多行字符串 前言 本地没有问题,打包就有问题,最后排查是i18n问题,这里记录下 原因分析 特殊符号被误解析:某些特殊符号可能在字符串解析时被特…

SQL SERVER的安装

目录 1.百度SQL SERVER找到图下的所显示的,点击进去 2.找到图下红色框起来的,点击立即下载 3.下载好之后点开,选择下载介质 4.SQLSERVER下载成功之后选择打开文件夹 6.双击后缀名是.iso的镜像文件 7.双击setup.exe进行安装 8.安装成功…

React-hooks:useReducer

useReducer 文档地址 useReducer 是一个 React Hook,它允许你向组件里面添加一个 reducer。 对于拥有许多状态更新逻辑的组件来说,过于分散的事件处理程序可能会令人不知所措。对于这种情况,你可以将组件的所有状态更新逻辑整合到一个外部函…

山岭隧道及道路3D建模教程【Blender】

创建具有恒定坡度的山路、隧道的信息和技术似乎散布在互联网上。 在这篇文章中,我将它们全部收集在一起。 这篇文章的大纲如下: 创建一座山创建一条路挖一条隧道 道路的坡度将固定为常数,从而消除颠簸。 NSDT工具推荐: Three.j…

elementuiPlus 中的 el-image 实现全屏展示,放大缩小配置偶尔失效?

问题 elementuiPlus 中的 el-image 实现全屏展示,滚轮失效。 全屏事件的放大缩小,主要是通过配置 zoom-rate , max-scale,min-scale来实现。【我遇到的事件失效的原因是因为我把 zoom-rate设置成了1】 默认值: :zoom-rate"1.2" :…

【深度学习实战(10)】图像推理之预处理

一、预处理流程 在把一张图像送入模型进行推理时,需要先进行预处理,预处理流程包括: (1)读取图像 (2)尺寸调整,letter_box(不失真) (3&#xff0…