GIT学习汇编

【Claude Code · VibeCoding】03|环境:Git 与 Node.js 安装 本地先装好 Git 与 Node.js,后面才能装 Claude Code CLI。按课件截图完成安装与版本检查。 阅读详情

转载自:http://roclinux.cn/  原作作者:rocrocket

 

Git架构 
Git 使用“三大数据结构”来完成它的工作,当前工作目录、“index file”(index cache) 和 git仓库。 git commit 会将 index file 中的改变写到 git 仓库;git add 会将“当前工作目录”的改变写到“index file”;“commit -a”则会直接将“当前工作目录”的改动同时写到“index file”和“git仓库”。 

将 Current working directory 记为 (1), 将 Index file 记为 (2), 将 Git repository 记为 (3), 他们之间的提交层次关系是 (1) -> (2) -> (3) 。git add 完成的是(1) -> (2),git commit 完成的是(2) -> (3),git commit -a 是两者的直接结合。从时间上看,可以认为(1)是最新的代码,(2)比较旧,(3)更旧。 

git diff 得到的是从(2)到(1)的变化。git diff –cached 得到的是从(3)到(2)的变化。 git diff HEAD 得到的是从(3)到(1)的变化。 

Git简单用法 

独立开发者的最大特点就是他们不需要和其他人来交换补丁,而且只在一个独立的固定的git仓库中工作。 

下面这些命令将可以帮助你完成日常工作: 

git-show-branch:可以显示你当前所在的分支以及提交记录。 

git-log:显示提交日志 

git-checkout或者git-branch:用于切换日志 

git-add:用于将修改内容加入到index文件中 

git-diff和git-status:用于显示开发者所做的修改 

git-commit:用于提交当前修改到git仓库。 

 

git commit -a无法把新增文件或文件夹加入进来,所以,如果你新增了文件或文件夹,那么就要老老实实的先git add .,再git commit喽。对了,针对开发日志,要说一句:切记写开发日志的时候,第一行一定要是少于50字的开发概括信息,而且第二行务必是空行,第三行开始才可以开始细致描述开发信息。这是因为很多版本服务系统中的email机制都会选取log中的第一行为邮件题目。


git-reset和git-checkout:用于撤销某些修改 

git-merge:用于合并两个分支 

git-rebase:用于维护topic分支(此处我也不太懂,等完成git学习后转过头来会关注此问题) 

git-tag:用于标记标签。 


1)获得帮助可以使用类似man git-****的命令格式:想获得关于commit命令的帮助,则man git-commit 想获得关于pull命令的帮助,则man git-pull 想获得关于merge命令的帮助,则man git-merge 以此类推 

2)任何人在使用git之前,都要提交简单的个人信息,以便git区分不同的提交者身份。 

git config –global user.name “your name” 
git config –global user.email yourname@example.com 
3)想新开启一个项目,应该先建立一个目录,例如名为myproject,然后所有的项目开发内容都在此目录下进行。 

cd myproject 
git init 
git add . 
git commit //这个步骤会自动进入编辑 状态,要求提交者输入有关本次提交的“开发信息” 
至此,一个新项目就诞生了,第一个开发信息(开发日志)也随之诞生。 

4)如果改进了项目源代码,并且到了开发者认为“应该再次记录开发信息”的时候,则提交“工作成果”。 

git commit -a //这是一个偷懒的命令,相当于git add .; git commit; 
5)想检查到目前为止对源码都做了哪些修改(相对于本次工作刚开始之时): 

git diff //这个命令只在git add之前使用有效。如果已经add了,那么此命令输出为空 
git diff –cached //这个命令在git add之后在git commit之前有效。 
git status //这个命令在git commit之前有效,表示都有哪些文件发生了改动 
6)想查看自项目开启到现在的所有开发日志 

git log 
git log -p //会输出非常详细的日志内容,包括了每次都做了哪些源码的修改 
7)开启一个试验分支(experimental),如果分支开发成功则合并到主分支(master),否则放弃该试验分支。 

git branch experimental //创建一个试验分支,名称叫experimental 
git branch //显示当前都有哪些分支,其中标注*为当前所在分支 
git checkout experimental //转移到experimental分支 
(省略数小时在此分支上的开发过程)… 如果分支开发成功: 

git commit -a //在experimental分支改进完代码之后用commit在此分支中进行提交 
git checkout master //转移回master分支 
git merge experimental //经证实分支开发成功,将exerimental分支合并到主分支 
git commit -a //彻底完成此次分支合并,即 提交master分支 
git branch -d experimental //因为experimental分支已提交,所以可安全删除此分支 
如果分支开发失败: 

git checkout master 
git branch -D experimental //由于分支被证明失败,因此使用-D来放弃并删除该分支 
8)随时查看图形化分支信息。 

gitk 
9)当合作伙伴bob希望改进我(rocrocket)的工作成果,则: 

bob$git clone /home/rocrocket/project myrepo //此命令用于克隆我的工作到bob的myrepo目录下。请注意,此命令有可能会因为/home/rocrocket的目录权限问题而被拒绝,解决方法是chmod o+rx /home/rocrocket。 
(省略bob数小时的开发过程)… 

bob$git commit -a //bob提交自己的改进成果到自己的git仓库中,并口头告知我(rocrocket)他已经完成了工作。 
我如果非常非常信任bob的开发能力: 

cd /home/rocrocket/project 
git pull /home/bob/myrepo //pull命令的意思是从远端git仓库中取出(git-fetch)修改的代码,然后合并(git-merge)到我(rocrocket)的项目中去。读者要记住一个小技巧,那就是“git pull .”命令,它和git merge的功能是一样的,以后完全可以用git pull .来代替git merge哦!请注意,git-pull命令有可能会因为/home/bob的目录权限问题而被拒绝,解决方法是chmod o+rx /home/bob。 
如果我不是很信任bob的开发能力: 

cd /home/rocrocket/project 
git fetch /home/bob/myrepo master:bobworks //此命令意思是提取出bob修改的代码内容,然后放到我(rocrocket)工作目录下的bobworks分支中。之所以要放到分支中,而不是master中,就是要我先仔仔细细看看bob的开发成果,如果我觉得满意,我再merge到master中,如果不满意,我完全可以直接git branch -D掉。 
git whatchanged -p master..bobworks //用来查看bob都做了什么 
git checkout master //切换到master分区 
git pull . bobworks //如果我检查了bob的工作后很满意,就可以用pull来将bobworks分支合并到我的项目中了 
git branch -D bobworks //如果我检查了bob的工作后很不满意,就可以用-D来放弃这个分支就可以了 
过了几天,bob如果想继续帮助我开发,他需要先同步一下我这几天的工作成果,只要在其当初clone的myrepo目录下执行git pull即可: 

git pull //不用加任何参数,因为当初clone的时候,git已经记住了我(rocrocket)的工作目录,它会直接找到我的目录来取。 

 

git fsck   检查错误

git gc      进行文件压缩

 

【目录】专栏文章导航 从最强工具链Davinci Configurator模块学习出发掌握AUTOSAR 阅读详情

相关推荐

飞腾Ubantu22.04.3安装OpenNebula测试

因OpenneBula官方镜像源只有AMD架构的镜像包不存在ARM的镜像包,借此用源码编译进行测试。

坚持就是胜利的博客 1009

CS:APP二进制炸弹phase2

写在前面 在前文《CS:APP二进制炸弹phase1》中成功“破解”了phase_1,毕竟是第一个阶段,非常简单。本篇来破解第二阶段。let's go!!!   分析 反汇编调用phase_2处的代码如下: 同样的,跟phase_1一样,我们输入的字符串首地址存储在寄存器%rdi中。 反汇编phase_2: 一眼望去,phase_2明显要比phase_1要复杂一些。不过没关系...

astrotycoon 5476

HFSS新手避坑指南:从零搭建T形波导功分器(含参数扫描与优化实战)

本文为HFSS新手提供T形波导功分器设计的详细指南,涵盖基础设置、建模技巧、参数扫描与优化实战。重点解析内场分析中的常见陷阱,如单位设置、波端口定义和布尔运算错误,并分享优化设计的关键步骤,帮助工程师快速掌握HFSS在微波器件设计中的应用。

weixin_27442001的博客 138

复古与现代化的碰撞:用VSCode重构DOS汇编开发体验

本文介绍了如何在VSCode中配置DOS汇编开发环境,实现复古编程与现代工具的结合。通过集成MASM/TASM汇编器和DOSBox模拟器,VSCode提供了语法高亮、一键编译调试和Git版本控制等现代化功能,显著提升了汇编语言的教学效率和遗产代码维护体验。

agile9scrum的博客 1084

VisionMaster位置修正功能深度解析:如何让找圆工具自动跟随移动目标?

本文深度解析海康威视VisionMaster平台的位置修正功能,重点介绍如何通过模板匹配与找圆工具的智能联动实现移动目标的动态追踪。文章详细阐述了工业视觉检测中的坐标系同步原理、模板匹配配置技巧及异常处理策略,为工程师提供了一套完整的工业级解决方案。

uu89012的博客 281

(实战)[re:Invent 2018]-001:赛道分析-(致敬1024)

打印log

Rainbow 2779

程序员在B站该怎么学习,视频干货系列分享

假期泡在B站学习Pr剪辑,顺便收集了一堆计算机相关视频教程,赶着今天,分享给大家。第一个视频是关于Linux教程,主要讲解Linux的安装,命令操作,Shell编程,服务管理,启动过程,...

程序员入门进阶 1221

[FreeRTOS+STM32CubeMX] 03 USART串口调试-基于中断实现接收和发送数据

我们接着上一小节,上一节讲到,接收上位机传来的数据时,需要事先知道传来的数据的字节数,这一操作实在有些反人类,那么如何解决这个问题,上位机输入多少,我们就接收多少数据呢? 接下来我将把USART引入中断,在接收数据的回调函数中引入二值信号量、消息队列,来让我的接收数据能够存储在队列中,并一个一个的在任务中输出出来,并最终在上位机回显。

RichieHuang的博客 2649

Awesome Games of Coding终极指南:通过游戏学习编程的完整清单

Awesome Games of Coding 是一个精心策划的编程学习游戏清单,专为希望通过趣味游戏掌握编程技能的新手和普通用户设计。无论你是完全没有编程基础的小白,还是想提升特定语言能力的开发者,这里都能找到适合自己的学习路径。 ## 为什么选择游戏化编程学习? 传统编程学习往往枯燥乏味,而游戏化学习通过以下方式让编程变得简单有趣: - **即时反馈**:游戏中的操作会立即产生结果,帮助你

gitblog_00998的博客 640

「极简」扣子(coze)教程 | 细节决定成败!这个小功能让用户满意度飙升,讲的太细了

这一期大师兄通过向扣子(coze)应用添加提示语的方法向用户显示系统运行的状态。

u014527622的博客 2111

JavaFX Stage

JavaFXStagejavafx.stage.Stage表示 JavaFX 桌面应用程序中的窗口。在 JavaFX 内部,Stage您可以插入一个 JavaFX Scene,它表示在窗口内显示的内容 - 在Stage.当 JavaFX 应用程序启动时,它会创建一个根Stage对象,该对象将传递给 start(Stage primaryStage)JavaFX 应用程序的根类的方法。此Stage 对象代表 JavaFX 应用程序的主窗口。

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 508

1626_MIT 6.828 lab1课程大纲学习过程整理

最终,我的编译在修改了文件之后通过了,可是运行的时候异常。遇到的这个问题差点让我放弃这个课程,还好最终切换了一个方式,直接换了32bit的系统,结果一切顺利。其中,这个图解的git工作过程我觉得还是很不错的,简短但是很奏效,能够快速了解git进行版本管理的一些基本理念。2. 要想顺利完成stack的监控,按照试验数据自己总结规律是可以的,更好的方式其实是去看一下函数调用call stack的约定设计说明。上面的标注还是堆栈处理相关的部分,下面的这个标注主要是描述了stabs信息如何传递到程序的。

小灰笔记 834

KVM — 与 QEMU 和 Libvirt 的关系

目录目录 前言 KVM QEMU KVM 与 QEMU qemu-kvm Libvirt Libvirt 在 OpenStack 中的应用前言如果是刚开始接触虚拟机技术的话, 对上述的概念肯定会有所混淆, 傻傻的分不清. 尤其在看虚拟化技术文档时导致理解能力下降, 所以在开始学习虚拟化技术之前对这些概念有一个整体的认识和清晰的理解, 就显得很有必要了.KVMKVM(Kernel-basedVirtu

烟云的计算 5736

让 AI 替我操作这台电脑,先把手能伸多远定下来

早上坐到工位,才想起昨天那份表格还在家里的机器上。这种时候以前只有两条路,开远程桌面自己点,或者等晚上回去。热榜上那篇 OpenClaw 的实测文我看了两遍。它换掉的是这条路。在 Windows 上装一个网关,把飞书、钉钉、Telegram 这些入口接进来,模型听懂你那句话,网关在本机上真的动手。装 Node 22 和 Git,跑一条,选一个 OpenAI 兼容的供应商把 base url 和 key 填上,再接远程访问,手机发一句话,家里那台电脑就开始干活。那篇文把部署讲了很细,截图一步一步都有。

m0_58155849的博客 366

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[LLM Wiki理论与实践-05]解读OpenWiki的Personal模式构建的知识库目录结构

[LLM Wiki理论与实践-04:使用OpenWiki的Personal模式构建知识库]介绍了如何执行安装OpenWiki和通过执行`openwiki personal --init`命令以个人模式进行初始化,最终调用`openwiki personal --update`和`openwiki ingest`命令利用配置的Connector加载外部数据源来生成构建个人知识库的Wiki页。这篇文章我们就来看看采用OpenWiki的Personal模式构建的知识库对应目录的结构以及具体文件的内容。

JaydenAI的博客 304

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

AI行业日报|2026-11-03:5个热点事件

本期内容覆盖基础模型安全边界演进、数据版权合规诉讼、预测型世界模型架构、AI原生工程基础设施升级及自动化代码审查链路优化。以下信息严格依据公开技术报告与权威媒体披露整理,已按证据来源逐条锚定,未经验证的具体实现细节均已归入架构建议区块,供工程团队对照实施。 Anthropic 发布技术预警,指出其当前模型训练循环已非常接近递归自我改进(Recursive Self-Improvement, RSI)阈值,即行业内所称的“自主构建AI”状态 1 。RSI 指代模型在训练与...

2504_94201249的博客 227

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

自建 Git 服务器和裸仓库差在哪:要能提合并请求

在一台 Linux 上 git init --bare 就能自建 Git 服务器,但它只能推拉代码,没有网页、合并请求、评审和按仓库分配的权限。对照裸仓库和 AngusGit 各自能做什么,再走一遍在 AngusGit 上发起合并请求的最短路径,以及已有裸仓库怎么完整搬过来。

AngusTester 318

【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore

本文系统讲解Git中撤销与恢复的核心命令,重点对比git checkout与新命令git restore的使用场景。针对“改错、add错、提交错”等常见问题,提供清晰解决方案:未暂存修改用git restore <file>,误暂存用git restore --staged,历史版本恢复用--source。强调git restore语义更清晰,推荐优先使用。同时提醒撤销操作不可逆,建议先git status、git diff确认,不确定时用git stash保底。最后总结速查表,帮助初学者安全高

m0_67393827的博客 462

重装 openvino、yaml-cpp

【代码】重装 yaml-cpp。

u010948546的博客 217

Git 新手使用教程

面向零基础用户的 Git 入门指南:从安装到日常使用,覆盖 90% 的常见场景。

Jerry小杰 228

【Git】从入门到精通(九)—— git diff:查看文件差异

本文全面解析Git的gitdiff命令,详解其三大核心场景:工作区vs暂存区、暂存区vs版本库、工作区vs版本库,涵盖输出格式、常用选项(如--stat、--name-only、-w)、版本比较、文件差异及外部工具集成。通过实战案例演示代码审查、提交自查、调试定位等应用场景,强调gitdiff--staged作为提交前检查的关键作用,并总结记忆口诀与常见问题解决方案,助力开发者精准掌握代码变更细节。

m0_67393827的博客 283

Claude Code做Unity项目移植(三): 使用SKILL进行自动化Git提交

本文介绍基于ClaudeCodeSkill的Unity自动化Git提交助手——unity-git-commit,通过四大模块实现提交前的智能检查与安全修复:1)校验Git仓库状态;2)验证Unity项目文件(如排除Library/Temp,确保.meta文件完整);3)依据可配置的C#命名规范自动识别并安全修复命名问题(避免序列化、反射等高危场景误改);4)生成精准提交注释,但强制人工确认。全程仅本地commit,不自动推送或破坏性操作,保障安全。核心思想为“机械化工作交AI,关键决策留人工”,显著提升提交

Aman1984的博客 641

Hive的多机 AI Agent 协同看板实战:跨机留言、任务搁置、计划跟踪的三个设计取舍

本文介绍多机AI Agent协同系统Hive的三项关键设计取舍:跨机留言采用内存+本地文件存储,避免Git版本冲突与延迟;搁置状态主动释放资源并保留历史,通过按钮而非新增列管理,保持看板简洁;任务计划以Tab形式聚合任务,实现项目级进度追踪。核心原则是“能用文件解决就不加数据库,能复用界面就不新增层级”,所有功能均在零依赖前提下实现高可用与易用性。附带一次/api/plans 404排查,揭示了配置与路由匹配的深层陷阱,具有普遍参考价值。

skywalk8163的专栏 531

中国 DevSecOps 领导者:Gitee 在金融级研发平台中的实践与定位

在 DevSecOps 语境下,领导者通常指在代码托管、持续集成、安全测试左移与研发流程治理四个环节中,能提供一体化平台能力并在关键行业形成规模化落地的服务商。据 Gitee 内部产品资料,Gitee 将 DevSecOps 敏捷安全列为技术应用场景之一,并配套 AST 全流程安全测试与开源风险治理能力。评估这类平台时,技术决策者应重点关注五个维度:私有化部署能力、信创兼容性、金融级客户案例、历史数据迁移路径、以及与现有身份认证体系的集成深度。

2602_96414767的博客 224

热榜上手|HyperFrames:写HTML出MP4

HeyGen 开源的 TypeScript 视频框架:把 HTML、CSS 动画直接渲染成确定性 MP4,专为 AI agent 批量出片设计,单周涨 5633 star。

mihuyang的博客 256

WSL 中 Git Clone GitHub 仓库完整踩坑指南

问题最佳解法WSL 证书验证失败或重装 ca-certificates22 端口超时SSH 走缺少密钥+ 添加到 GitHub权限过宽被拒Gitee 认证失败使用 PAT 替代密码 + 清除凭据缓存--system权限拒绝改用--global或--local作用域一条黄金建议:在 WSL 中访问 GitHub,优先使用 SSH over 443。一次配置,永久解决证书、端口、认证三重问题,比 HTTPS 方式稳定得多。

dingyuana的专栏 354
上一篇: 配置开发支持高并发TCP连接的Linux应用程序全攻略
下一篇: 一篇简化的Linux启动过程说明
zzulp
博客等级 码龄19年 464粉丝 176原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值