Git学习笔记

JAVA:Spring Boot3 集成 Spring AI 实现 Skill 开发 本文介绍了如何通过Spring Boot和Spring AI实现大模型技能(Skill)开发,让AI具备调用业务系统能力。文章首先解释了Skill的概念,即AI可调用的业务能力,如查询订单、天气等,并展示了执行流程和整体架构。然后详细介绍了实践样例,包括技术版本、Maven依赖配置、AI服务设置、ChatClient创建和Skill技能注册中心的实现。注册中心提供了技能的注册、查询、启用/禁用等功能,支持按类别管理技能,并能够获取所有可用技能列表。通过这种方式,开发者可以轻松为大模型扩展业务功能调用能力。 阅读详情

目录

初始化仓库

工作区&暂存区&分支仓库&远程仓库

添加文件

状态管理

版本回退

撤销修改

删除文件

远程仓库

分支管理

多人协作

标签管理

使用Github

致谢


初始化仓库

#初始化一个Git仓库,使用git init命令即可将当前目录文件夹变成Git可以管理的仓库。
#创建git仓库的本地文件夹即为工作区,创建完毕后其中多了.git文件夹,代表Git的版本库
git init

工作区&暂存区&分支仓库&远程仓库

工作区:就是在电脑里能看到的目录

暂存区:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。Git的版本库(.git文件夹)里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD;

添加文件

#添加文件到Git仓库,分两步:使用命令,注意,可反复多次使用,添加多个文件,实际是添加到暂存区。当用#git add命令后,在工作区的修改被放入暂存区,准备提交。
git add <file>
git commit -m <message>
#使用命令,message是本次提交的说明,最好是有意义的。Git跟踪并管理的是修改,而非文件,git commit只负责把暂存区的修改提交,未add到暂存区的修改不会被提交。

状态管理

#要随时掌握工作区的状态,使用如下命令
git status
#如果git status显示有文件被修改过,用下面命令
git diff

回滚

若推送的分支已经合并到主分支,这时想回滚代码可用git revert命令,本质是用某次commit的代码再做一次提交,不会对已存在的代码产生影响;例如合入主分支的commit id是aaaaaa,只需要拉取最新的主分支,然后新建分支,执行git revert aaaaaa,再推送到远程,合回主分支即可。

版本回退

#版本回退使用如下命令,HEAD是指向当前版本的commit_id,也就是最新的提交,
git reset --hard commit_id

#上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^
#容易数不过来,所以写成HEAD~100。
git reset --hard HEAD~1

#撤销中间某次commit
git revert commit_id

#撤销中间某次合并的commit
git revert -m commit_id

#PS:git revert 失败报错:error: option `mainline' expects a number greater than zero、error: Commit faulty merge is a merge but no -m option was given、
git revert -m 1 commit_id

#版本回退前,用可以查看提交历史,以便确定要回退版本的commit_id,
#--pretty参数使每个版本输出一行,--graph参数可以查看分支合并图。
git log --pretty=oneline --graph

#要重返未来,先查看命令历史,以便确定要回到未来版本的commit_id。
git reflog



撤销修改

#场景1:当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,
#用以下命令;git checkout其实是用暂存区的版本替换工作区的版本,
#无论工作区是修改还是删除,都可以“一键还原”,
#其中的--很重要,没有--,就变成了“切换到另一个分支”的命令。
git checkout -- filename

#场景2:当不但改乱了工作区某个文件的内容,还add到了暂存区时,想丢弃修改,分两步,
git reset HEAD <file>        //第一步回到场景1
git checkout -- filename    //第二步按场景1操作

#场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,
#参考版本回退一节,不过前提是没有推送到远程库。

git reset的三种模式

区别:

  1. --hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。

  2. --soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。

  3. --mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。

使用场景:

  1. --hard:(1) 要放弃目前本地的所有改变時,即去掉所有add到暂存区的文件和工作区的文件,可以执行 git reset -hard HEAD 来强制恢复git管理的文件夹的內容及状态;(2) 真的想抛弃目标节点后的所有commit(可能觉得目标节点到原节点之间的commit提交都是错了,之前所有的commit有问题)。

  2. --soft:原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files),所以假如我们之前工作目录没有改过任何文件,也没add到暂存区,那么使用reset --soft后,我们可以直接执行 git commit 將 index暂存区中的內容提交至 repository 中。为什么要这样呢?这样做的使用场景是:假如我们想合并「当前节点」与「reset目标节点」之间不具太大意义的 commit 记录(可能是阶段性地频繁提交,就是开发一个功能的时候,改或者增加一个文件的时候就commit,这样做导致一个完整的功能可能会好多个commit点,这时假如你需要把这些commit整合成一个commit的时候)時,可以考虑使用reset --soft来让 commit 演进线图较为清晰。总而言之,可以使用--soft合并commit节点。

  3. --mixed(默认):(1)使用完reset --mixed后,我們可以直接执行 git add 将這些改变果的文件內容加入 index 暂存区中,再执行 git commit 将 Index暂存区 中的內容提交至Repository中,这样一样可以达到合并commit节点的效果(与上面--soft合并commit节点差不多,只是多了git add添加到暂存区的操作);(2)移除所有Index暂存区中准备要提交的文件(Staged files),我们可以执行 git reset HEAD 来 Unstage 所有已列入 Index暂存区 的待提交的文件。(有时候发现add错文件到暂存区,就可以使用命令)。(3)commit提交某些错误代码,或者没有必要的文件也被commit上去,不想再修改错误再commit(因为会留下一个错误commit点),可以回退到正确的commit点上,然后所有原节点和reset节点之间差异会返回工作目录,假如有个没必要的文件的话就可以直接删除了,再commit上去就OK了。

删除文件

#确实要从版本库中删除该文件,也分两步,先用命令git rm删掉,再git commit

git rm <filename>
git commit -m “remove filename”

#注意,这两步操作之后,工作区中的文件也会被删除!!!

远程仓库

​
#关联远程仓库,关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名;
git remote add origin git@server-name:path/repo-name.git

//在远程版本库建立一个与本地分支相同的远程分支,以后每次推送直接git push即可
git push --set-upstream origin feature/pushtest

#关联后,首次推送master分支的所有内容:
git push -u origin master

#此后,每次本地提交后,只要有必要,就可以使用以下命令推送最新修改;
git push origin master

#克隆仓库,Git支持多种协议,ssh协议速度最快 --recursive拉取子模块
git clone --recursive git@github.com:GYE19970220/gitskills.git
#从指定远程分支clone
git clone -b <name> git@github.com:GYE19970220/gitskills.git
#从指定远程tag clone
git clone -b <tag number> git@github.com:GYE19970220/gitskills.git



​

分支管理

开发一个新feature,最好新建一个分支

#创建dev分支:
git branch dev

#切换到dev分支:
git checkout dev
git switch dev

#创建并切换到dev分支:
git checkout -b dev
git switch -c dev
#以上命令默认从当前分支创建,下面的命令从远程仓库的dev分支创建
git checkout -b dev origin/dev
#从指定远程tag创建分支
git checkout -b dev_1.2.10.1 1.2.9.1

#查看当前分支:
git branch

#合并指定分支dev到当前分支,合并分支时,默认是fast forward模式,
#加上--no-ff参数就可以用普通模式合并,普通模式合并后的历史有分支,
#能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git merge dev --no-ff

#合并某个分支改动的到当前分支:
git cherry-pick <commit_id>


#删除分支dev:
git branch -d dev
#如果要删除一个没有被合并过的分支,可以通过以下命令强行删除
git branch -D <name>


#当手头工作没有完成时,先把工作现场git stash一下,
#然后去重拉分支干别的事情,干完后,再git stash pop,回到工作现场
#保存工作现场:
git stash
#查看stash存的所有现场
git stash list
#回到工作现场
git stash pop
git stash pop stash@{0}
#只想复制commit 4c805e2这个提交所做的修改,并不是把整个master分支merge过来
git cherry-pick 4c805e2


#查看远程库详细信息:
git remote -v

#推送分支:例如 git push origin master
git push <远程仓库名> <本地分支名>

多人协作

#首先,可以试图推送自己的修改
git push origin <branch-name>

#如果推送失败,则因为远程分支比你的本地更新,需要先保存现场,
git stash

#然后拉一下新的远程分支
git pull
#如果git pull失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream-to=origin/dev dev
#然后重新git pull

#再恢复现场
git stash pop

#如果合并有冲突,则解决冲突,并在本地commit;
#没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;

  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

  • feature分支是否推到远程,取决于是否和小伙伴合作在上面开发。

总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视心情而定!

标签管理

#新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag <tagname>

#指定标签信息;
git tag -a <tagname> -m "blablabla..."

#查看所有标签。
git tag

#推送一个本地标签;
git push origin <tagname>

#推送全部未推送过的本地标签;
git push origin --tags

#删除一个本地标签;
git tag -d <tagname>

#删除一个远程标签。
git push origin :refs/tags/<tagname>

使用Github

  • 在GitHub上,可以任意Fork开源仓库;

  • 自己拥有Fork后的仓库的读写权限;

  • 可以推送pull request给官方仓库来贡献代码。

  • 忽略某些文件时,需要编写.gitignore;

  • .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

致谢

文章内容几乎都来自廖雪峰老师的Git教程,感谢,侵权删。

Linux 命令行的艺术 Linux 命令行的艺术前言基础日常使用文件及数据处理系统调试单行脚本冷门但有用仅限 OS X 系统仅限 Windows 系统更多资源免责声明熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练... 阅读详情

相关推荐

【运筹优化】VRPTW建模实战:Python+Gurobi求解带时间窗的车辆路径规划

本文详细介绍了如何使用Python和Gurobi求解带时间窗的车辆路径问题(VRPTW)。通过将物流调度难题抽象为混合整数规划模型,并逐步讲解建模、编码与求解过程,为读者提供了从理论到实践的完整指南,帮助解决物流配送中的路径优化挑战。

peace的博客 201

Git 使用心得 & 常见问题整理

目录 Git 流程图 配置 Git 查看 Git 信息 git reflog git log 点线图 Git 常用命令 Git 常用命令详解 add status commit push & pull branch merge 三种常用合并方法 rebase stash diff remote tag 删除文件 版本切换 & 重设 & 撤销 cherry-pick git submodule 子模块 新建一个 Git 项目的两种方式 1

Dragon的博客 5096

数字后端实现Innovus教程之手把手教你N种高亮timing path和clock tree方法

数字IC后端设计实现Innovus教程之手把手教你N种高亮timing path和clock tree方法

weixin_37584728的博客 3599

Git常见问题总结

常见问题 1、拉取别人的远程分支合并后,git 会存取这个拉取的记录,如果你不小心删了别人的上传的文件,这时候想要再拉取别人的分支是没用的,会显示 already-up 这时候可以回滚代码,重新拉取。 2、以前有过这样的经历:前后端、客户端的代码都存放在一个 git 仓库中,在根目录下各自新建项目目录。那么可以直接在自己的项目目录下使用 git 提交代码并且在各自的项目目录下配置 .gitignore 文件,不用在根目录下配置 .gitignore 文件,这样就互不影响了 3、fatal:refus

weixin_59963229的博客 2885

基于PID的定速巡航控制系统设计【MATLAB源码+Word文档】

本文详细介绍了定速巡航控制是一种车辆驾驶辅助系统,它能让驾驶者在高速或长途驾驶时,设定一个固定的车速,然后车辆会自动维持这个速度行驶,无需驾驶者持续踩油门。这大大减轻了驾驶者的疲劳,同时也提高了行驶的安全性。PID定速巡航控制系统是一种利用比例(Proportional)、积分(Integral)和微分(Derivative)控制算法来实现车辆定速巡航的先进系统。这种系统能够根据设定的速度,自动调整油门开度或制动力度,使车辆保持恒定的速度行驶。这种控制系统具有响应速度快、控制精度高、稳定性好等优点。

weixin_761237174的博客 1670

中国主要湖泊水库面状矢量边界图层ArcGIS应用实战:从数据获取到专题图制作

本文详细介绍了中国主要湖泊水库面状矢量边界图层在ArcGIS中的实战应用,从数据获取到专题图制作的全流程。涵盖官方数据源、科研机构共享数据及商业平台的选择,以及ArcGIS中的数据处理、拓扑错误修正和专题图设计技巧,帮助用户高效完成湖泊水库的空间分析与可视化。

weixin_33672400的博客 255

git push到远程分支想撤回,看看这条指令

一次推送代码的过程中,由于心急手快急着下班。一不小心 push 错了一个文件上去。记录一下翻车的经历。 看看远端分支的情况 是的提交了错误的文件 1. 先使用 git log 查看记录 使用命令 git revert -m 想要回撤的commitid 执行完成看看git 状态,恢复到了原本的状态 最后在重新 push 远端就完成了 ...

weiming的博客 1364

一文讲清CAN和CANFD的区别

本文将从技术原理、协议特性到应用场景,深度解析两者的核心差异。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 3212

三年 Git 使用心得 & 常见问题整理

Git 流程图Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库配置 Git# 配置全局用户 $ git con...

全栈前端精选 1426

强化学习:从经典强化学习理解强化学习

1. 背景介绍 强化学习(Reinforcement Learning,RL)作为机器学习领域的重要分支,近年来取得了长足的进步。其核心思想是让智能体通过与环境的交互学习最优策略,从而最大化累积奖励。不同于监督学习和非监督学习,强化学习无需预先标注数据,而是通过试错的方式逐步学习,具有更强的适应性和泛化能力。

AI架构师小马 1804

OmniParser V2 和 OmniTool 让 AI 来控制 Windows 设备

OmniParser V2 和 OmniTool 是由微软开发的一套工具,通过屏幕解析技术让 AI 能够理解和控制 Windows 设备。OmniParser V2 是一款数据解析工具,可以解读屏幕内容,并将内容传递给大模型OmniTool 则是一个运行 Windows Agent 的工具,提供 Windows 界面给 AI 操作。

简简单单Onlinezuozuo 2733

Git 学习笔记

个人对 Git 初步学习的理解以及记录

m0_73959697的博客 2110

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

GIT 学习笔记

GIT 学习笔记 --- 思维导图

weijinhua_123的博客 458

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

git学习笔记

git学习下载 Git-2.19.1-64-bit 包 以及git安装步骤和git常用命令

解决bug的路上 243

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Git学习笔记之——常见指令

Git学习笔记之-------常见指令 工作区\暂存区\仓库 说明 git config --global user.name “名称” 注册用户名 git config --global user.email “邮箱” 注册用户邮箱 git init 在当前文件夹建立Git项目 git mv game.py wordgame.py 本地安全地修改文件名 git ...

iot小胡的博客 378

Git学习笔记大全

本文是一份全面的Git学习指南,系统介绍了Git的核心概念和操作指令。主要内容包括:版本控制原理(集中式与分布式对比)、Git核心概念(仓库、提交、分支等)、基础操作(创建仓库、提交更改)、进阶操作(分支管理、合并冲突)、高级功能(储藏修改、标签管理)以及远程操作(推送拉取)。文章详细讲解了50+常用Git指令,涵盖配置、提交、分支、撤销、合并等日常开发场景,并附有操作示例和注意事项。适合Git初学者系统学习,也可作为开发者的速查手册,帮助掌握这个强大的分布式版本控制工具。

2402_88633912的博客 1236

git和github学习笔记

git和github学习笔记 仅为学习笔记和重要内容参考,如果想学习git相关知识,请移步廖雪峰的git教程 安装git windows下下载二进制安装 创建git仓库 在git bash工具窗口内,切换到某文件夹下,输入git init在该文件夹下生成.git文件夹 git常用命令 语句 含义 git status 查看状态 git log 查看日志 git reflog...

ShadowKiller' blog 771
上一篇: 目标检测之Label Assignment
下一篇: ubuntu18.04安装gcc5.4
阿瓜瓜瓜
博客等级 码龄9年 18粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值