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

本地Git基础知识

本地Git基础知识文章目录本地Git基础知识初识GitGit核心概念初始配置.bashrc获取本地仓库基础操作指令基础命令**添加文件至忽略列表**分支查看差异变基暂时清空暂存区初识Git为什么需要版本控制器简单来说当我们修改代码后发现程序崩溃想要回到之前的版本时如果没有版本控制工具就只能靠CtrlZ或者祈祷了这时版本控制器就像时光机一样让我们可以自由穿梭在代码的各个版本之间以便我们更好更安全的修改代码版本控制器集中式版本控制SVNCVS分布式版本控制GitGit就是一个分布式版本控制系统由Linux之父Linus Torvalds在2005年创建记录每次文件的改动回到任意历史版本多人协作开发不会互相覆盖代码并行开发功能分支管理互不干扰不同于SVN等集中式版本控制系统Git的分布式架构意味着每个人电脑上都有完整的代码仓库即使服务器挂了你仍然可以本地提交、查看历史离线也能工作有网络时再同步Git会对所有文件内容进行校验和计算使用SHA-1哈希算法保证任何文件改动都会被检测到所以你可以放心只要提交到Git数据就不会丢失或损坏Git GUI Git提供的图形界面工具Git BashGit提供的命令行工具Git核心概念在开始使用Git之前需要理解几个关键概念工作区 → 暂存区 → 版本库(你的文件夹)(准备提交)(永久存储)工作区就是你电脑上能看到的项目文件夹暂存区临时存放你的改动决定哪些改动要提交版本库仓库Git存储所有版本数据的地方Git管理的文件有三种状态已修改(modified)文件改了但还没存到暂存区已暂存(staged)改动的文件已经添加到暂存区等待提交已提交(committed)文件已经安全保存在版本库中初始配置当你第一次安装Git需要先进行一些基本设置才能更好地使用这些配置只需要做一次Git会记住它们Git的每次提交都会记录提交者的信息想象一下团队协作时如果不配置别人就不知道这段代码是谁写的出了问题也不知道找谁。所以第一件事就是告诉Git我是谁”所以我们的第一步就是配置你的基础信息设置用户信息git config –global user.name “”git config –global user.email “”查看配置信息git config –global user.namegit config –global user.email配置有三种级别git config –local只对某个仓库有效git config –global对当前用户所有仓库有效git config –system对系统所有登录的用户有效优先级仓库配置 全局配置 系统配置越具体的配置优先级越高显示config的配置git config –list –localgit config –list –globalgit config –list –system配置文件存在哪里系统配置/etc/gitconfig全局配置~/.gitconfig或~/.config/git/config仓库配置.git/config.bashrc.bashrc是Bash shell 的用户级配置文件默认存放在用户主目录~/.bashrc或C:\Users\你的用户名\.bashrcGit Bash核心作用是每次打开一个新的 Bash 终端窗口 / 会话时自动执行这个文件里的命令帮你定制终端的行为和环境定义别名「等号前后不要有空格」是通用规范#把 ls -l显示详细文件信息简化成 llaliasllls -l#ls -al中-a是显示所有文件包括隐藏文件-l是以长格式显示文件/目录详细信息但不包括隐藏文件-al是显示所有文件的详细详细#常见的隐藏文件以英文句号开头示例.bashrc用户终端配置文件、.gitignoreGit 忽略规则文件、.sshSSH 密钥目录#输出git提交日志aliasgit-loggit log --prettyoneline --all --graph --abbrev-commit#把 rm 增加安全提示避免误删aliasrmrm -i#自定义 Git 快捷命令aliasgpullgit pullaliasgpushgit push配置环境变量#解决乱码问题gitconfig--globalcore.quotepathfalse#添加自定义程序路径让系统能找到你的程序exportPATH$PATH:/home/你的用户名/my_program#设置 Python 虚拟环境默认路径exportWORKON_HOME~/.virtualenvs#设置终端编码避免中文乱码exportLC_ALLen_US.UTF-8配置PATH后你不用输完整路径就能运行自己写的脚本 / 程序定制终端外观#自定义提示符显示「用户名主机名 路径 $」PS1\u\h \w $修改后终端提示符会从默认的$变成xxxxxx ~/code $更直观自动执行初始化命令#自动进入常用工作目录cd~/projects#自动激活 Python 虚拟环境source~/.venv/bin/activate#显示欢迎语/系统信息echo欢迎回来当前目录$(pwd)每次打开终端自动运行指定命令获取本地仓库在电脑任意位置创建一个空目录作为本地Git仓库进入目录右键打开Git Bash窗口执行命令git init创建成功后可在文件夹看到隐藏git目录Git 仓库本质上就是一个「包含了.git 隐藏目录的文件夹」核心结论Git 仓库 文件夹 .git 隐藏目录这些都是初始化成功后.git隐藏目录里的文件⚠️注意这里的config是本地配置由于没有单独配置所以只有【core】核心配置没有【user】段落全局配置在~/.gitconfig文件里reference引用它是一个指向 Git 提交记录commit的 “指针”相当于一个方便人类记忆的别名让你不用记住一串长长的提交哈希值比如a1b2c3d...而是用一个简单的名字比如main、dev来定位到最新的代码版本所以整句话的意思是当前HEAD指针正指向本地main分支的最新提交基础操作指令基础命令git add 添加到暂存区git status 查看状态git commit -m “备注” 提交git commit -amend 修改提交的messagegit commit -am “” 提交这是-a和-m的组合参数用于快速提交mmessage直接附带提交信息不进入编辑器aall自动暂存所有已跟踪文件的修改不包括新文件git mv 文件名 新文件名gitk 打开当前仓库的图形历史视图 --all 查看所有分支的历史git loggit log –all 显示所有分支git log –prettyoneline 将提交的信息显示为一行git log –abbrev-commit 使得输出的commit更简短git log –graph 以图的形式显示git log –decorate (mac新版参数)git reset –hard commitID 版本切换git reset HEAD 把所有暂存区恢复到工作区git checkout — 把工作区恢复成暂存区git reset HEAD — 把部分暂存区恢复到工作区git reflog 记录所有操作当你回退后clear终端后可以用这个命令分析出你回退前的版本号再进行回退git cat-file -t 对象id查看 Git 仓库中「所有底层对象」的内容 / 类型 / 大小.Git 的核心底层原理 → 【万物皆对象】Git 底层命令Git 所有上层命令git add/git commit/git branch最终都是基于它实现的「对象 ID」就是之前在 git branch -av / git log 里看到的 一串 40 位的哈希值commit idGit 里叫 SHA-1 值可以简写前 4-6 位即可Git 能自动识别✅tag → 标签对象打标签时生成比如发布版本 git tag v1.0开发中用的少暂时不用管✅commit → 提交对象每一次 git commit 都会生成 1 个 commit 对象记录「本次提交的版本信息」✅tree → 目录对象所有文件夹 / 目录都是 tree 对象比如你的 docs文件夹、仓库根目录✅blob → 文件对象所有被 Git 追踪的文件内容都是 blob 对象比如你的 README.md、笔记.txt)-t → 全称 --type核心作用查看 Git 对象的【类型】-t(查类型) -s(查大小) -p(查内容)find .git/objects -type fLinux命令搜索目录.git/objects这是 Git 仓库的核心数据库目录—— 「blob 文件对象、tree 目录对象、commit 提交对象、tag 标签对象」所有 Git 对象最终都会以文件的形式保存在这个目录里type→ 筛选「文件 / 文件夹的类型」f→ 是file的缩写代表普通文件 (regular file)如果写-type d→d是directory缩写代表「文件夹」添加文件至忽略列表可以在工作目录里创建一个名为**.gitignore**的文件文 件名固定在里面列出忽略的文件模式# no .a files*.a# but do track lib.a, even though you are ignoring .a files above!lib.a# only ignore the TODO file in the current directory,not subdir /TODO/TODO# ignore all files in the build/directorybuild/# ignore doc/notes.txt, but not doc/server/arch.txtdoc/*.txt#ignore all .pdf files in the doc/ directorydoc/**/*.pdf分支git branch 查看分支git branch -av 是-a-v简称-a是–all指查看所有分支包括远程分支-v是– verbose指显示详细信息git branch 分支名 创建分支git checkout 分支名HEAD指向当前分支 移动分支git checkout -b 分支名 创建并立即切换到新分支git checkout 4a2b3c0 当后面是提交哈希值的情况下也是移动但会进入分离头指 针的状态分离头指针简单来说就是你的当前工作目录没有指向一个具体的分支而是直接指向了某次具体的提交在这种状态下操作主要影响体现在提交与保存方面如果进行新的提交新提交可以正常创建但它们不属于任何分支。切换分支时的风险如果你此时切换到其他分支如git checkout main新提交就会变得很难找到。因为没有任何分支指向它们它们最终可能会被 Git 的垃圾回收机制清理掉它主要用于临时操作而非长期开发临时查看想查看历史中某个旧版本的代码或者验证一个 Bug 是否在特定版本存在。实验性修改只想做一些临时尝试不打算长期保存如果身处该状态但发现修改很重要立即创建一个新分支即可保护它们在 Git 里提交是否安全不取决于它在哪而取决于有没有引用分支/标签指向它git merge 分支名 合并分支git branch -d 分支名 删除分支需要做各种检查git branch -D 分支名 强制删除冲突如果同时修改了同一个文件的同一行就要手动解决冲突开发分支规范master生产分支develop开发分支feature/xxxx分支hotfix/xxxx分支查看差异git diff 查看工作目录和暂存区的差异git diff --cached / git diff --staged 查看暂存区和上次提交的差异git diff abc123 def456 查看两次提交之间的差异git diff HEAD 看当前文件和上一次提交的区别 HEAD~2 / HEAD^^ 查看当前文件和上上次 的区别diff--gita/index.js b/index.js index1234567..89abcde100644--- a/index.js // --- 表示旧版本 b/index.js // 表示新版本 -1,4 1,4 // 表示改动位置 console.log(开始);-letx10;// - 表示删除的行 let x20;// 表示添加的行 console.log(结束);变基把一系列提交从一个基础移动到另一个基础交互式rebase整理提交历史git rebase -i 哈希值. 我们最好选择要进行变基提交的父亲接下来就会出现一个交互界面下面的注释会提示你做变更的命令信息只需要将上面的命令进行修改即可比如下面就是正在修改提交信息的message 在这里我们只修改前面的pick命令接下来会弹出新的交互面执行你要的操作最后保存退出即可暂时清空暂存区当我们临时需要处理其他任务时我们需要把现在的工作区放在一边就可以用如下命令git stash可以看到执行这个命令之后我们的工作区很干净这个时候就可以去处理你的紧急任务了git stash apply该命令可以让之前工作区重新拿出来并且stash列表里不会删除记录git stash pop 这个会让stash列表里的一并清除

相关文章:

本地Git基础知识

本地Git基础知识 文章目录本地Git基础知识初识GitGit核心概念初始配置.bashrc获取本地仓库基础操作指令基础命令**添加文件至忽略列表**分支查看差异变基暂时清空暂存区初识Git 为什么需要版本控制器? 简单来说,当我们修改代码后发现程序崩溃&#xff…...

AI编程项目品牌系统生成:一分钟打造语义化设计令牌与CLAUDE.md指南

1. 项目概述:一分钟搞定AI编程项目的品牌系统 如果你和我一样,日常重度依赖 Cursor、Claude 或 Windsurf 这类 AI 编程工具来快速构建项目,那你一定也遇到过这个痛点:项目功能做出来了,但界面看起来千篇一律&#xff…...

claude code安装使用

分别尝试了在Windows下和Ubuntu下安装使用claude code,配置方法差不多都是可行的1、Windows下安装 1.1 安装Node.js Node.js是claude code必须的依赖环境,只管装就行了。 下载地址: https://nodejs.org/zh-cn/download选择比较新的LTS长期支持…...

【必收藏】开发人最近太难了!2026年不转大模型,真要被淘汰了

2026年的开发圈,真的太卷也太难了! AI技术迎来规模化落地爆发期,多模态、具身智能快速迭代,曾经安稳的CRUD开发工程师,岗位需求同比下跌25%,正在一步步沦为下个被淘汰的“传统岗位”,不少从业3-…...

AI代码助手本地部署指南:从原理到实践,打造专属编程副驾驶

1. 项目概述与核心价值最近在GitHub上闲逛,又发现了一个挺有意思的项目,叫skibidiskib/ai-codex。光看这个名字,可能有点抽象,但点进去研究了一下,发现它本质上是一个围绕AI代码生成与辅助编程的工具集或框架。这类项目…...

HybridMimic框架:强化学习与质心动力学融合的机器人控制

1. HybridMimic框架解析:当强化学习遇见质心动力学在实验室第一次看到Booster T1人形机器人执行踢腿动作时,我意识到传统控制方法的局限性——那些精心调参的PD控制器在面对动态运动时显得如此笨拙。这正是HybridMimic诞生的背景:一个融合强化…...

10个核心概念,小白也能轻松入门大模型,速收藏!

本文介绍了学习大模型必须掌握的10个核心概念,包括LLM(大语言模型)、Prompt(提示词)、Token(词元)、RAG(检索增强生成)、Embedding(嵌入)、向量数…...

Claude大模型最佳实践指南:从提示工程到工作流集成的系统化方法

1. 项目概述:一份关于Claude的“最佳实践”指南最近在GitHub上看到一个挺有意思的仓库,叫“claude-best-practices”。光看名字,你大概能猜到它是干什么的——没错,就是一份专门针对Anthropic公司开发的Claude系列大语言模型的使用…...

2025_NIPS_RepLiQA: A Question-Answering Dataset for Benchmarking LLMs on Unseen Reference Content

一、文章主要内容 REPLIQA 是一个专为评估大型语言模型(LLMs)在未见过的参考内容上表现而设计的问答数据集,核心解决现有基准数据集可能因数据泄露导致模型依赖记忆而非真实阅读理解能力的问题。数据集包含 17,954 份虚构参考文档和 89,770 个问答对,覆盖 17 个主题,分为…...

【更新至2024年】2001-2024年上市公司客户、供应商集中度数据

2001-2024年上市公司客户、供应商集中度数据 1、时间:2001-2024年 2、来源:上市公司年报 3、指标:股票代码、股票简称、年份、省份、城市、区县、省份代码、城市代码、区县代码、行业代码、行业名称、首次上市年份、是否ST类、前五大客户销…...

开源数据生成框架xungen:从原理到实战的模拟数据生成指南

1. 项目概述:一个面向开发者的开源数据生成利器在软件开发和测试的日常工作中,我们常常需要大量的、结构化的模拟数据。无论是为了填充数据库进行压力测试,还是为了前端界面展示需要逼真的预览数据,亦或是为了API接口的联调测试&a…...

7步掌握炉石传说自动化:开源脚本完全指南

7步掌握炉石传说自动化:开源脚本完全指南 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script Hearthstone-Script是一款免费开源的炉石传说自动…...

长芯微LMD9245完全P2P替代AD9245,14位、20/40/65/80MSPS模数转换器ADC

描述长芯微LMD9245是一款单芯片、14位、20 MSPS/40 MSPS/65 MSPS/80 MSPS模数转换器(ADC),采用3 V单电源供电,内置一个高性能采样保持放大器(SHA)和基准电压源。它采用多级差分流水线架构,内置输…...

一名女性程序员迈向技术SEO的人生之书

这本书也就简简单单的看了3~5遍而已吧~ 😄 可以算是我人生谷底、重建信心、触底反弹的人生之书吧~ AEO&GEO当道,为什么要看SEO这本书? AEO 和 GEO的参考文档是 姚金刚的GEO白皮书 同时在youtube 上看 Nathan Gotch ,他同时经…...

AI数字人开发实战:从开源工具到多模态整合

1. 项目概述:一个开箱即用的AI数字人创作工具 最近在捣鼓AI数字人项目,发现了一个宝藏级的开源项目—— uezo/aiavatarkit 。简单来说,这是一个集成了语音合成、图像驱动和实时渲染的“一站式”AI数字人创作工具包。如果你正想快速构建一个…...

终极指南:如何让老款RTX显卡免费享受FSR3帧生成技术

终极指南:如何让老款RTX显卡免费享受FSR3帧生成技术 【免费下载链接】dlssg-to-fsr3 Adds AMD FSR 3 Frame Generation to games by replacing Nvidia DLSS Frame Generation (nvngx_dlssg). 项目地址: https://gitcode.com/gh_mirrors/dl/dlssg-to-fsr3 还在…...

4.硬件框图word可以打开但是编辑不了怎么办

1、硬件框图word可以打开但是编辑不了怎么办硬件框图使用word可以打开但是无法编辑是因为没有安装Visio,此时word中默认是一张图片格式,所以无法编辑,当安装Visio后,word中会自动安装一个插件,此时在word中也可以进行简…...

RepoToText:将Git仓库转换为结构化文本的实用工具

1. 项目概述:从代码仓库到结构化文本的“翻译官”如果你和我一样,经常需要快速理解一个陌生的开源项目,或者想把自己项目的代码库整理成一份清晰的文档,那你肯定遇到过这样的困境:面对一个包含成百上千个文件的Git仓库…...

Arm Cortex-A75系统寄存器架构与编程实践

1. Cortex-A75系统寄存器架构概述Arm Cortex-A75作为一款高性能应用处理器核心,其系统寄存器设计体现了Armv8-A架构的精髓。系统寄存器是处理器内部用于控制和监控CPU运行状态的特殊寄存器,不同于通用寄存器,它们通常通过特定的指令&#xff…...

AI时代下测试工程师对用例质量审核风险识别的核心能力

嘿,各位刚入行的测试小伙伴,大家好!我是小乔,一个在测试这行摸爬滚打了十五年的老兵。这些年,我见过测试工具从简单的脚本进化到如今眼花缭乱的AI平台,但心底有个声音越来越清晰:无论工具怎么变…...

Shadow Accept:智能自动确认工具,提升AI编程助手工作效率

1. 项目概述:告别重复确认,让AI助手流畅工作 如果你和我一样,日常重度依赖Cursor、Claude Code这类AI编程助手,那你肯定对下面这个场景深恶痛绝:你刚让AI帮你执行一个 npm install 或者修改一个文件,正准…...

别再乱用fsdbDumpvars了!IC验证中Dump波形的这几个参数,你真的搞懂了吗?

IC验证工程师的波形Dump实战指南:精准控制fsdbDumpvars参数提升仿真效率 在芯片验证的日常工作中,波形调试是不可或缺的一环。面对日益复杂的设计,如何高效地Dump所需信号、避免生成冗余数据,成为验证工程师必须掌握的技能。本文将…...

洛谷-算法2-5-进阶搜索4

P2960 [USACO09OCT] Invasion of the Milkweed G 题目描述 农夫约翰一直尽力保持牧场里长满丰盛、美味且健康的草供奶牛食用。然而,他输掉了这场战斗,因为邪恶的乳草在他的农场西北部站稳了脚跟。 牧场通常被划分为一个直角网格,高度为 Y&…...

第四篇 量子机器学习:重构传统大模型缺陷的全新核心解决方案

前言:传统大模型的穷途末路,唯有量子逻辑能破局在前三篇内容中,我们完成了三重底层奠基:第一篇撕开AI固有瓶颈,确立量子算力为唯一破局方向;第二篇跳出公式桎梏,拆解叠加态、量子纠缠的本源内核…...

从入门到精通:Gemini 3.1 Pro解决办公问题的完整指南

概要Gemini 3.1 Pro 是 Google DeepMind 2026 年 2 月 19 日发布的旗舰大语言模型。相比前代,它在推理能力、上下文窗口和多模态处理上都有明显提升。ARC-AGI-2 得分 77.1%,是上一代 Gemini 3 Pro 31.1% 的两倍多。GPQA Diamond 94.3%,SWE-Be…...

基于Clean Architecture与CQRS的银行信贷系统后端架构实战

1. 项目概述:一个基于Clean Architecture与CQRS的银行信贷系统后端 最近在梳理企业级应用架构时,我重新审视并重构了一个银行信贷系统的后端项目。这个项目不是一个简单的CRUD演示,而是一个力求贴近真实生产环境、强调架构清晰度和可维护性的…...

ChatGPT API本地调试利器:开源UI工具部署与高效使用指南

1. 项目概述:一个面向开发者的轻量级ChatGPT API管理界面最近在折腾各种大语言模型API的集成和测试,发现OpenAI官方的Playground虽然功能强大,但对于需要频繁切换模型、管理上下文、或者批量测试不同提示词的开发者来说,操作起来还…...

Java 面向对象核心基础(一)

本文将详细介绍Java中的包(package)、访问限定符、static,希望能给大家带来帮助。如果有一些地方不严谨,可以在评论区指正或者私信我,我们一起进步! 文章目录一、包(package)包的引出…...

Node.js终端Canvas开发:构建交互式CLI界面的核心原理与实践

1. 项目概述:在终端里“画”出交互式界面如果你和我一样,常年与终端(Terminal)打交道,那你一定经历过这样的场景:想写一个命令行工具,功能逻辑都清晰,但一到用户交互环节就头疼。传统…...

Stackmoss:模块化工程化工具集,快速搭建现代开发技术栈

1. 项目概述:一个为现代开发栈而生的“瑞士军刀”最近在GitHub上闲逛,发现了一个名为“Stackmoss”的项目,作者是max-rogue。光看名字,你可能会联想到“栈”和“苔藓”——一种在特定环境下稳定生长的东西。这名字起得挺有意思&am…...