git的使用(简洁版)
什么是 Git?
Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者能够轻松地管理代码库的变更历史。
Git 的核心概念
- Repository(仓库):存储项目代码和版本历史的地方。可以是本地仓库,也可以是远程仓库。
- Commit(提交):一个代码变更的记录,包含了作者、时间、描述和变更内容。
- Branch(分支):从主分支(通常是
master或main)分出来的独立开发线。允许多个开发者同时工作在不同的特性或修复上。 - Merge(合并):将一个分支的变更合并到另一个分支的过程。
- Clone(克隆):从一个远程仓库复制一份完整的代码库到本地。
- Pull(拉取):从远程仓库获取最新的变更并合并到本地分支。
- Push(推送):将本地分支的变更推送到远程仓库。
- Status(状态):查看当前工作目录中文件的变更状态。

- 用户A从服务端仓库中获取最新的代码和文件,这个过程称为“Pull”。通过这种方式,他们可以在自己的计算机上获得项目的最新状态。
- 在完成一些修改或添加新功能后,用户A会将自己的更改推送到服务端仓库,这就是所谓的“Push”操作。这样做的目的是确保其他团队成员也能看到这些更新。
- 同样地,用户B和用户C也会执行类似的流程——先从服务端仓库拉取数据,然后再将他们的工作成果上传回去。

-
抓取/克隆 (fetch/clone):首先,你需要从一个远程仓库(Remote)中获取代码。这个操作通常通过
git clone命令完成,它会将远程仓库的所有内容复制到你的本地计算机上。 -
检出 (checkout):在本地仓库(Repository)中,你可以使用
git checkout命令切换到不同的分支或提交记录。这样可以让你在一个安全的环境中测试和修改代码。 -
添加 (add):当你对文件进行了更改并希望将其纳入版本控制时,需要使用
git add命令将这些文件添加到暂存区(Index)。这是提交前的一个必要步骤。 -
提交 (commit):接下来是执行
git commit命令来正式保存你所做的所有改动。此时,Git会创建一个新的快照,并附带一条描述此次变更的信息。 -
拉取 (pull):为了确保你的本地副本是最新的,可以通过运行
git pull命令来合并任何来自远程仓库的新提交。此操作相当于先执行git fetch以下载最新的数据,然后用git merge将它们整合进当前分支。 -
推送 (push):最后一步是使用
git push命令将你在本地做出的修改推送到远程服务器上。这样其他团队成员就可以看到并使用你的更新了。
Git 快速入门
1. 安装 Git
- Windows: 下载并安装 Git for Windows。
- macOS: 使用 Homebrew 安装,
brew install git。 - Linux: 使用包管理器安装,例如在 Ubuntu 上使用
sudo apt-get install git。
2. 配置 Git
在开始使用 Git 之前,你需要配置你的用户名和邮箱地址,这些信息将会出现在你的提交记录中。
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
3. 创建新仓库
你可以通过两种方式创建一个新的 Git 仓库:
创建本地仓库的方法有两种:
- 一种是创建全新的仓库:
git init,会在当前目录初始化创建仓库。 - 另一种是克隆远程仓库:
git clone [url]
-
从零开始创建一个新的仓库:
# 初始化一个新的 Git 仓库 git init my-project cd my-project -
克隆一个已有的远程仓库:
git clone https://github.com/username/my-project.git cd my-project
创建完多出了一个被隐藏的.git目录,这就是本地仓库Git的工作场所。
![]()
4. 添加文件
可以简单理解为,git add命令就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到仓库。
# 创建一个新文件
echo "Hello, World!" > README.md# 将文件添加到暂存区
git add README.md# 查看状态
git status

修改文件“R.md”,未暂存:
执行git add .暂存:

5. 提交变更
当你完成了一些工作,可以通过创建一个提交(Commit)来记录这些变更。
# 提交变更
git commit -m "Initial commit"
提交时,-m 参数后面跟随的是提交信息,用于描述这次变更的内容。
6. 查看提交历史
你可以使用 git log 命令查看仓库的提交历史。
git log
7. 创建分支
Git 的分支功能非常强大,允许你在不影响主分支的情况下进行开发。
# 创建并切换到新分支
git branch my-feature
git checkout my-feature
或者使用一行命令:
git checkout -b my-feature
8. 合并分支
当你在分支上完成了开发工作,可以将该分支的变更合并到主分支。
# 切换回主分支
git checkout main# 合并 my-feature 分支到 main 分支
git merge my-feature
9. 删除分支
当你不再需要某个分支时,可以将其删除。
git branch -d my-feature
10. 远程仓库操作
Git 支持与远程仓库交互,例如 GitHub、GitLab 等。
-
添加远程仓库:
git remote add origin https://github.com/username/my-project.git -
推送本地分支到远程仓库:
git push -u origin main-u参数表示将本地分支与远程分支关联,这样以后可以直接使用git push而不需要指定远程分支。 -
从远程仓库拉取更新:
git pull origin main
常用 Git 命令
git init: 初始化一个新仓库。git clone [url]: 克隆一个远程仓库到本地。git add [file]: 将文件添加到暂存区。git commit -m "message": 提交暂存区的变更。git status: 查看工作目录的状态。git log: 查看提交历史。git branch: 查看分支。git checkout [branch]: 切换分支。git merge [branch]: 合并指定分支到当前分支。git push [remote] [branch]: 推送变更到远程仓库。git pull [remote] [branch]: 从远程仓库拉取并合并变更。
更多 Git 功能
git diff: 查看工作目录和暂存区之间的差异。git stash: 临时保存当前工作目录的变更,便于切换分支或处理紧急任务。git rebase: 将一个分支的变更应用到另一个分支上,通常用于保持提交历史的整洁。git tag: 为特定的提交打上标签,通常用于标记发布版本。
总结
Git 是一个强大的工具,通过掌握这些基本的命令,你可以开始使用 Git 管理你的代码。随着使用的深入,你还可以学习更多高级的 Git 功能,如 rebase、stash、tag 等。

相关文章:
git的使用(简洁版)
什么是 Git? Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者…...
使用命令行创建 Maven 项目
本指南将引导您通过命令行创建一个简单的 Maven 项目。本教程假设您已经在您的机器上安装了 Maven 和 JDK 21。 第一步:验证 Maven 和 Java 安装 在开始之前,我们需要验证 Maven 和 Java 是否已正确安装在您的系统上。 验证 Maven 安装 打开命令行终…...
JVM_栈详解一
1、栈的存储单位 **栈中存储什么?**, 每个线程都有自己的栈,栈中的数据都是以栈帧(Stack Frame)的格式存在。在这个线程上正在执行的每个方法都各自对应一个栈帧(Stack Frame)。 栈帧是一个内存…...
Linux 金仓数据库安装和使用
文章目录 Linux 金仓数据库安装和简单使用 一、下载二、安装三、启动法1. 通用启动方式法2. 系统服务启动方式 四、测试五、DB管理工具1. 启动DB管理工具2. DB管理工具的常用功能 六、卸载 Linux 金仓数据库安装和简单使用 一、下载 打开官网 https://www.kingbase.com.cn/xzz…...
STM32笔记(串口IAP升级)
一、IAP简介 IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级。 通常实…...
C++网络编程:select IO多路复用及TCP服务器开发
C网络编程:使用select实现IO多路复用 一、什么是 IO 多路复用?二、IO多路复用器 select三、相关接口3.1、fd_set 结构体3.2、宏和函数 四、select 实现 TCP 服务器五、总结 一、什么是 IO 多路复用? 在网络编程中,最容易想到的并…...
部署 L2JMobius 天堂2芙蕾雅版本
首先下载所需要的服务器端 “L2J_Mobius.zip” 和芙蕾雅客户端(三个压缩文件), 我的网盘下载:https://pan.baidu.com/s/1XdlcCFPvXnzfwFoVK7Sn7Q?pwdavd4 所有文件都在“芙蕾雅”目录下,也可以加入企鹅交流裙 87470…...
C#开发合集
用C#轻松搞定m3u8视频下载与合并 嘿,程序员们!今天咱们来聊聊如何用C#写个小程序,轻松下载和合并m3u8视频文件。没错,就是那种分段的流媒体视频。准备好了吗?让我们开始吧! 准备工作 在动手之前…...
鸿蒙面试 --- 性能优化
性能优化可以从三个方面入手 感知流畅、渲染性能、运行性能 感知流畅 在应用开发中,动画可以为用户界面增添生动、流畅的交互效果,提升用户对应用的好感度。然而,滥用动画也会导致应用性能下降,消耗过多的系统资源,…...
React的基础知识:Context
1. Context 在 React 中,Context 提供了一种通过组件树传递数据的方式,无需手动在每个层级传递 props。这在处理一些全局应用状态时非常有用,比如用户认证、主题、语言偏好等。 如何使用 Context 创建 Context:首先,…...
微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)
通过bdf号查看 -s (bus) lspci -s 03:00.0通过vendor id或者device id等设备查看 -d (device) lspci -d 15b3: #这里是vendor号,所以在前面 lspci -d :1021 #这里是设备号,所以要:在前vendorid和deviceid…...
【Kubernetes 集群核心概念:Pod】pod生命周期介绍【五】
5.1 Pod生命周期 Pod的生命周期指的是从Pod创建到终止的整个过程。它分为以下两种常见情况: 长期运行Pod: 例如运行HTTP服务的Pod,它在正常情况下会一直运行,但可以手动删除或终止。短期运行Pod: 例如执行计算任务的…...
c++的虚继承说明、案例、代码
虚继承的基本概念 在 C 中,虚继承主要用于解决多继承时可能出现的菱形继承问题。菱形继承是指一个类有两个(或更多)子类,而这两个子类又同时继承自一个共同的基类,当这些子类又被另一个类继承时,就形成了菱…...
小米PC电脑手机互联互通,小米妙享,小米电脑管家,老款小米笔记本怎么使用,其他品牌笔记本怎么使用,一分钟教会你
说在前面 之前我们体验过妙享中心,里面就有互联互通的全部能力,现在有了小米电脑管家,老款的笔记本竟然用不了,也可以理解,毕竟老款笔记本做系统研发的时候没有预留适配的文件补丁,至于其他品牌的winPC小米…...
介绍SSD硬盘
SSD硬盘(固态硬盘,Solid State Drive)是一种利用闪存技术存储数据的存储设备,与传统的机械硬盘(HDD)不同,SSD没有任何活动部件,因此其性能和耐用性较为优越。以下是SSD硬盘的一些主要…...
CMAKE常用命令详解
NDK List基本用法 Get–获取列表中指定索引的元素 list(Get list_name index output_var)解释 list_name: 要操作集合的名称index: 要取得的元素下标output_var: 保存从集合中取得元素的结果 栗子 list(GET mylist 0 first_element) # 获取第一个元素APPEND–在列表末尾…...
Vue3的通灵之术Teleport
前言 近期Vue3更新了一些新的内容,我都还没有一个一个仔细去看,但是还是有必要去解读一下新内容的。就先从Teleport 开始吧。 官方对 Teleport 的解释是:<Teleport> 是一个内置组件,它可以将一个组件内部的一部分模板“传…...
ue5第三人称闯关游戏学习(一)
视频资料38 - Compilers and Editors_哔哩哔哩_bilibili 上一个第一人称射击项目做完 接下来要更深入学习。 引入资产与C来创建第三人称闯关游戏 这次要引入的资产有两个分别是 Unreal Learning Kit:Game和stylized character kit: casual 01 不过有个比较麻…...
IIC 随机写+多次写 可以控制写几次
verilog module icc_tx#(parameter SIZE 2 , //用来控制写多少次 比如地址是0000 一个地址只能存放8bit数据 超出指针就会到下一个地址0001parameter CLK_DIV 50_000_000 ,parameter SPEED 100_000 ,parameter LED 50 )( input wire c…...
controller中的参数注解@Param @RequestParam和@RequestBody的不同
现在controller中有个方法:(LoginUserRequest是一个用户类对象) PostMapping("/test/phone")public Result validPhone(LoginUserRequest loginUserRequest) {return Result.success(loginUserRequest);}现在讨论Param("login…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

