当前位置: 首页 > news >正文

程序员必备工具篇 / 程序员必备基础:Git

前言

掌握 Git 命令是每位程序员必备的基础,之前一直是用 smartGit 工具,直到看到大佬们都是在用 Git 命令操作的,回想一下,发现有些 Git 命令我都忘记了,于是写了这篇博文,复习一下~

https://github.com/whx123/JavaHome

公众号:顺哥轻创

文章目录

  • Git 是什么?
  • Git 的相关理论基础
  • 日常开发中,Git 的基本常用命令
  • Git 进阶之分支处理
  • Git 进阶之处理冲突
  • Git 进阶之撤销与回退
  • Git 进阶之标签 tag
  • Git 其他一些经典命令

Git 是什么

在回忆 Git 是什么的话,我们先来复习这几个概念哈~

什么是版本控制?

百度百科定义是酱紫的~

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

那些年,我们的毕业论文,其实就是版本变更的真实写照… 脑洞一下,版本控制就是这些论文变更的管理~

什么是集中化的版本控制系统?

那么,集中化的版本控制系统又是什么呢,说白了,就是有一个集中管理的中央服务器,保存着所有文件的修改历史版本,而协同开发者通过客户端连接到这台服务器,从服务器上同步更新或上传自己的修改。

什么是分布式版本控制系统?

分布式版本控制系统,就是远程仓库同步所有版本信息到本地的每个用户。嘻嘻,这里分三点阐述吧:

  • 用户在本地就可以查看所有的历史版本信息,但是偶尔要从远程更新一下,因为可能别的用户有文件修改提交到远程哦。
  • 用户即使离线也可以本地提交,push 推送到远程服务器才需要联网。
  • 每个用户都保存了历史版本,所以只要有一个用户设备没问题,就可以恢复数据啦~

什么是 Git?

Git 是免费、开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

Git 的相关理论基础

  • Git 的四大工作区域
  • Git 的工作流程
  • Git 文件的四种状态
  • 一张图解释 Git 的工作原理

Git 的四大工作区域

先复习 Git 的几个工作区域哈:

  • Workspace:你电脑本地看到的文件和目录,在 Git 的版本控制下,构成了工作区。
  • Index/Stage:暂存区,一般存放在 .git 目录下,即.git/index, 它又叫待提交更新区,用于临时存放你未提交的改动。比如,你执行 git add,这些改动就添加到这个区域啦。
  • Repository:本地仓库,你执行 git clone 地址,就是把远程仓库克隆到本地仓库。它是一个存放在本地的版本库,其中 HEAD 指向最新放入仓库的版本。当你执行 git commit,文件改动就到本地仓库来了~
  • Remote:远程仓库,就是类似 github,码云等网站所提供的仓库,可以理解为远程数据交换的仓库~

Git 的工作流程

上一小节介绍完 Git 的四大工作区域,这一小节呢,介绍 Git 的工作流程咯,把 git 的操作命令和几个工作区域结合起来,个人觉得更容易理解一些吧,哈哈,看图:


git 的正向工作流程一般就这样:

  • 从远程仓库拉取文件代码回来;
  • 在工作目录,增删改查文件;
  • 把改动的文件放入暂存区;
  • 将暂存区的文件提交本地仓库;
  • 将本地仓库的文件推送到远程仓库;

Git 文件的四种状态

根据一个文件是否已加入版本控制,可以把文件状态分为:Tracked (已跟踪) 和 Untracked (未跟踪),而 tracked (已跟踪) 又包括三种工作状态:Unmodified,Modified,Staged

  • Untracked: 文件还没有加入到 git 库,还没参与版本控制,即未跟踪状态。这时候的文件,通过 git add 状态,可以变为 Staged 状态
  • Unmodified:文件已经加入 git 库,但是呢,还没修改,就是说版本
http://www.lryc.cn/news/242645.html

相关文章:

  • MacBook使用指南
  • 数据库的事务的基本特性,事务的隔离级别,事务隔离级别如何在java代码中使用,使用MySQL数据库演示不同隔离级别下的并发问题
  • Robust taboo search for the quadratic assignment problem-二次分配问题的鲁棒禁忌搜索
  • Linux:创建进程 -- fork,到底是什么?
  • 基于SpringBoot+vue的token验证
  • Clickhouse设置多磁盘存储策略
  • Python开发运维:Django 4.2.7 使用Celery 5.3.5 完成异步和定时任务
  • 媒体增加日活量的有效策略
  • es6新特性总结
  • Spring Boot + hutool 创建海报图片
  • 0002Java程序设计-springboot在线考试系统小程序
  • Linux(Centos)上使用crontab实现定时任务(定时执行脚本)
  • 【Leetcode合集】20. 有效的括号
  • OpenGL 绘制线(Qt)
  • Java | 多线程并发编程CountDownLatch实践
  • 分布式定时任务系列6:XXL-job触发日志过大引发的CPU告警
  • Spark RDD、DataFrame和Dataset的区别和联系
  • 代码随想录算法训练营第四十五天|139.单词拆分、背包问题总结
  • 深度学习卫星遥感图像检测与识别 -opencv python 目标检测 计算机竞赛
  • wxWidgets 3.2.4发布 —— 发布于2023年11月11日
  • PyQt6运行QTDesigner生成的ui文件程序
  • 基于mediapipe的人手21点姿态检测模型—CPU上检测速度惊人
  • 系统架构设计: 21 论敏捷软件开发方法及其应用
  • 【深度学习】脸部修复,CodeFormer,论文,实战
  • OpenGL_Learn14(光照贴图)
  • 【JVM精讲与GC调优教程(概述)】
  • 蓝桥杯物联网竞赛_STM32L071_2_继电器控制
  • python之pyqt专栏2-项目文件解析
  • Kafka 集群如何实现数据同步
  • opencv- CLAHE 有限对比适应性直方图均衡化