项目管理利器 Git

一、序言

今天聊聊 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.rhkb.cn/news/312151.html

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

相关文章

C++11(下篇)

文章目录 C111. 模版的可变参数1.1 模版参数包的使用 2. lambda表达式2.1 Lambda表达式语法捕获列表说明 2.2 lambda的底层 3. 包装器3.1 function包装器3.2 bind 4. 线程库4.1 thread类4.2 mutex类4.3 atomic类4.4 condition_variable类 C11 1. 模版的可变参数 C11支持模版的…

python 列表对象函数

对象函数必须通过一个对象调用。 列表名.函数名() append() 将某一个元素对象添加在列表的表尾 如果添加的是其他的序列,该序列也会被看成是一个数据对象 count() 统计列表当中 某一个元素出现的次数 extend() 在当前列表中 将传入的其他序列的元素添加在表尾…

自定义类似微信效果Preference

1. 为自定义Preference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

vue:如何通过两个点的经纬度进行距离的计算(很简单)

首先假设从api获取到了自己的纬经度和别人的纬经度 首先有一个概念需要说一下 地球半径 由于地球不是一个完美的球体&#xff0c;所以并不能用一个特别准确的值来表示地球的实际半径&#xff0c;不过由于地球的形状很接近球体&#xff0c;用[6357km] 到 [6378km]的范围值可以…

Python-VBA函数之旅-eval函数

目录 一、eval函数的常见应用场景&#xff1a; 二、eval函数安全使用注意事项&#xff1a; 三、eval函数与exec函数对比分析&#xff1a; 1、eval函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、相关文章&#xff1a; 个人主页&#xff1a;ht…

RAG (Retrieval Augmented Generation) 结合 LlamaIndex、Elasticsearch 和 Mistral

作者&#xff1a;Srikanth Manvi 在这篇文章中&#xff0c;我们将讨论如何使用 RAG 技术&#xff08;检索增强生成&#xff09;和 Elasticsearch 作为向量数据库来实现问答体验。我们将使用 LlamaIndex 和本地运行的 Mistral LLM。 在开始之前&#xff0c;我们将先了解一些术…

文献学习-37-动态场景中任意形状针的单目 3D 位姿估计:一种高效的视觉学习和几何建模方法

On the Monocular 3D Pose Estimation for Arbitrary Shaped Needle in Dynamic Scenes: An Efficient Visual Learning and Geometry Modeling Approach Authors: Bin Li,† , Student Member, IEEE, Bo Lu,† , Member, IEEE, Hongbin Lin, Yaxiang Wang, Fangxun Zhong, Me…

OpenCV基本图像处理操作(六)——直方图与模版匹配

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…

Golang | Leetcode Golang题解之第27题移除元素

题目&#xff1a; 题解&#xff1a; func removeElement(nums []int, val int) int {left, right : 0, len(nums)for left < right {if nums[left] val {nums[left] nums[right-1]right--} else {left}}return left }

AI智能体技术突破:引领科技新浪潮

AI智能体技术突破&#xff1a;引领科技新浪潮 基于大模型的 AI Agent 工作流基于大模型的 AI Agent 工作流效果AI Agent 的四种设计模式Reflection 反思设计模式Tool use 工具使用设计模式Planning 规划设计模式Multiagent collaboration 多智能体协作设计模式 吴恩达在红杉美国…

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙大逃杀小游戏模块成品源码&#xff0c;可嵌入任何平台系统&#xff0c;增加用户粘性&#xff0c;消除泡沫&#xff0c;短视频直播引流。 玩家选择一间房间躲避杀手…

网盘——添加好友

关于添加好友&#xff0c;过程如下&#xff1a; A、首先客户端A发送加好友的请求&#xff0c;发送的信息包括双方的用户名 B、当服务器收到请求之后&#xff0c;服务器将数据库中在线用户查找出来&#xff0c;如果客户端B已经是你的好友了&#xff0c;服务器告诉客户端A他已经…

Adobe AE(After Effects)2021下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件&#xff0c;由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能&#xff0c;可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

定制k8s域名解析------CoreDns配置实验

定制k8s域名解析------CoreDns配置实验 1. 需求 k8s集群内通过CoreDns互相解析service名. 同时pana.cn域为外部dns解析,需要通过指定dns服务器进行解析 再有3个服务器,需要使用A记录进行解析 2. K8s外DNS服务器 查看解析文件 tail -3 /var/named/pana.cn.zone 解析内容 ww…

第11章 数据仓库和数据智能知识点梳理

第11章 数据仓库和数据智能知识点梳理&#xff08;附带页码&#xff09; ◼ 数据仓库&#xff08;Data Warehouse&#xff0c;DW&#xff09;&#xff1a;始于 20 世纪 80 年代&#xff0c;发展于 20 世纪 90 年代&#xff0c;后与商务智能&#xff08;Business Inteligence,BI…

Servlet-Filter实现反爬虫

以前用DotNetCore实现过反爬虫功能。在tomcat里面可以利用Servlet的Filter类实现请求的控制来达到反爬虫功能&#xff0c;进而增强JRT的web安全。 实现黑名单过滤器&#xff0c;对在黑名单列表的IP的所有请求都跳转到警告页面&#xff0c;业务各种请求自行定义加入黑名单 /* …

OpenHarmony实战开发-如何使用ArkUIstack 组件实现多层级轮播图。

介绍 本示例介绍使用ArkUIstack 组件实现多层级轮播图。该场景多用于购物、资讯类应用。 效果图预览 使用说明 1.加载完成后显示轮播图可以左右滑动。 实现思路 1.通过stack和offsetx实现多层级堆叠。 Stack() {LazyForEach(this.swiperDataSource, (item: SwiperData, i…

彩虹聚合登录系统源码开心版 一站式社会化账号登录系统

本文来自&#xff1a;彩虹聚合登录系统源码开心版 一站式社会化账号登录系统 - 源码1688 应用介绍 简介&#xff1a; 彩虹聚合登录系统源码开心版 一站式社会化账号登录系统 彩虹聚合登录是彩虹旗下的社交账号聚合登录系统&#xff0c;为网站提供一站式社交账号登录选项&…

【Redis 神秘大陆】006 灾备方案

六、Redis 灾备方案 6.1 存储方案 6.1.1 基础对比 RDB持久化AOF持久化原理周期性fork子进程生成持久化文件每次写入记录命令日志文件类型二进制dump快照文件文本appendonly日志文件触发条件默认超过300s间隔且有1s内超过1kb数据变更永久性每秒fsync一次文件位置配置文件中指…

强强联手|AI赋能智能工业化,探索AI在工业领域的应用

随着人工智能&#xff08;AI&#xff09;技术的不断发展和应用&#xff0c;AI在各个领域展现出了巨大的潜力和价值。在工业领域&#xff0c;AI的应用也越来越受到关注。AI具备了丰富的功能和强大的性能&#xff0c;为工业领域的发展带来了巨大的机遇和挑战。 YesPMP是专业的互联…