Git一点通
1.Git的优势
Git是一个伟大的版本管理工具,比之svn,具有以下优势:
-
分布式版本控制:Git是一种分布式版本控制系统,每个开发者都拥有自己的完整代码库,不需要依赖网络连接就可以进行版本控制、合并和提交操作。这样可以提高开发效率,并降低了对网络的依赖。
-
速度快:Git的设计目标之一就是速度。相对于SVN,Git在提交、分支、合并和切换等操作上都有更快的响应速度。
-
强大的分支管理:Git的分支管理非常强大,支持轻松创建、合并和删除分支。这使得开发人员能够轻松地进行并行开发,同时保持代码库的稳定性。
然而,Git也没能全面占领svn的市场,因为研发团队的成员不一定都是技术出身,例如策划,测试同学,svn容易上手,换成git根本搞不定。
2.Git的基本概念
首先需要了解下Git的工作区、暂存区、仓库区(本地仓库)、远程仓库的概念
- 工作区:你在电脑里能看到的目录,比如我们的workspace 文件夹就是一个工作区。
- 暂存区:.git目录下的index文件,可以用
git add
命令将工作区的文件添加到暂存区。 - 仓库区(本地仓库):.git目录下的objects文件夹,可以用
git commit
命令将暂存区的内容提交到仓库区。 - 远程仓库:远程服务器上的仓库,可以用
git push
命令将本地仓库的内容推送到远程仓库。
3. Git常用命令
Git虽然也有自己的GUI工具,但除了文件比较比较方便之外,其他还是觉得命令行用得舒服。
3.1从github下载仓库
git clone [https://github.com/kingston-csj/jforgame]
3.2更新远程代码
git pull
3.3添加文件到本地暂存区
// 指定文件
git add pom.xml
// 匹配所有java文件
git add *.java
// 所有文件
git add .
3.4提交文件到本地仓库
git commit -m '牛逼的优化'
3.5推送本地代码到远程仓库
git push
3.6查看本地文件状态
git status
3.7查看本地仓库提交日志
// 查看全部提交记录,按空格下一页
git log
// 查看前几条提交记录
git log -n
3.8查看所有分支
git branch
3.9创建分支
//创建分支不切换
git branch 分支名
//创建分支并切换
git checkout -b 分支名
3.10删除分支
git branch -d 分支名
3.11删除远程分支
git push origin --delete 分支名
3.12合并dev分支合并到master
分支
//切换到master分支
git checkout master
//拉取远程代码
git pull
//合并代码
git merge dev
//推送到master分支
git push origin master
3.13合并部分提交到master分支
git cherry-pick <commitid>
3.14比较文件
git diff xx.java
3.15保存当前的工作进度并清空工作区
git stash
3.16查看保存的工作进度列表
git stash list
3.17将保存的工作进度应用到当前分支
git stash pop
3.18代码还原(从工作区区还原)
// 单个文件
git checkout -- jforgame-demo/src/main/java/jforgame/demo/socket/GameServer.
java
// 模糊匹配
git checkout -- *.java
3.19代码还原(从暂存区还原)
git restore --stage jforgame-demo/src/main/java/jforgame/demo/socket/GameServer.java
3.20代码还原(从仓库还原,本地代码也会清除)
//返回到上一个版本代码
git reset --hard HEAD^
//返回到上上一个版本代码
git reset --hard HEAD^^
//返回到指定版本
git reset --hard commitid
-------------未完待续
4.常见命令的区别
4.1git stash apply与 git stash pop
- git stash apply命令会将保存的工作进度应用到当前分支,但不会删除stash;
- git stash pop命令则会将保存的工作进度应用到当前分支,并且删除stash
4.2git fetch与git pull
-
git fetch:git fetch是将远程仓库的最新代码下载到本地,但并不会自动合并到当前分支。它将更新远程仓库的追踪分支(如origin/master),但不会影响当前分支。这个命令可以让你查看远程分支的更新情况,并进行比较和分析,然后决定是否将更新合并到当前分支。
-
git pull:git pull在执行时会先执行git fetch命令,然后自动将远程分支的更新合并到当前分支。相当于git fetch + git merge。如果当前分支有未提交的修改,git pull会尝试自动合并,如果出现冲突则需要手动解决冲突。因此,git pull更适合在需要快速获取远程更新并合并到当前分支的情况下使用。
4.3git reset --hard与git reset --soft
git reset --hard回退到某个commit,不保留任何修改。这意味着所有未提交的更改和未跟踪的文件都将被永久删除。
git reset --soft回退到某个commit,保留修改。这意味着之前已经添加到暂存区的更改还会保留下来,你可以重新提交这些更改。未跟踪的文件仍然保留在工作目录中。
-------------未完待续
5.常见错误操作
在使用 Git 过程中,有一些常见的错误操作可能会导致代码丢失或者历史记录被修改。以下是一些常见的错误操作
- git commit --amend:如果你在提交代码后发现需要修改提交信息或添加遗漏的文件,可以使用 git commit --amend 命令。然而,如果在执行此命令之前已经进行过推送(push)操作,那么推送会失败,并且需要执行强制推送(force push)操作来修改远程仓库中的历史记录。
- git reset --hard:git reset --hard 命令可以用来重置当前分支的 HEAD 和索引(index)到指定的提交版本,并且会丢弃所有未提交的更改。如果你在工作目录中有未保存的更改,执行此命令将会永久删除这些更改,无法恢复。
- git push --force:正常情况下,Git 会拒绝非快进式的推送操作,以避免覆盖其他人的更改。然而,如果你执行 git push --force 命令,将会强制推送本地分支到远程仓库,即使这可能会覆盖其他人的更改。因此,在执行强制推送操作之前,需要确保与团队成员协商一致。
- git checkout -b:当你在一个分支上使用 git checkout -b <branch> 命令创建新分支时,如果已经有一个同名的分支存在,Git 会自动切换到该分支,而不是创建新分支。这可能会导致你在错误的分支上进行开发。
- git clean -f:git clean -f 命令用于删除工作目录中未跟踪的文件。但是如果你执行此命令时未注意,可能会误删一些重要的文件。因此,在执行此命令之前,需要确保你真的要删除这些文件。
- git checkout <branch>,当你准备切换分支,务必要将工作区的代码先提交。否则,切换之后本地代码将会丢失。或者,先把工作区的代码通过git stash命令缓存起来。
-------------未完待续
相关文章:
Git一点通
1.Git的优势 Git是一个伟大的版本管理工具,比之svn,具有以下优势: 分布式版本控制:Git是一种分布式版本控制系统,每个开发者都拥有自己的完整代码库,不需要依赖网络连接就可以进行版本控制、合并和提交操作…...
商标转让有哪些好处 商标转让条件 商标转让流程
商标转让是企业之间转让商标权益的一种交易方式。它在商业运作中扮演着重要的角色,对于企业的发展和战略布局都有一定的影响。 商标转让的好处: 1、商标价值变现:企业在商标注册过程中投入了大量的时间和精力,通过转让可以将商标…...

诺视科技完成亿元Pre-A2轮融资,加速Micro-LED微显示芯片商业化落地
近日,Micro-LED微显示芯片研发商诺视科技(苏州)有限公司(以下简称“诺视科技”)宣布完成亿元Pre-A2轮融资,本轮融资由力合资本领投,老股东盛景嘉成、汕韩基金以及九合创投持续加码,这…...

Unity定时播放音乐
一、需求 需要定时在早上8:50,中午12:00,下午13:10定时播放音乐 二、实现步骤 依次在unity创建背景图、主文字提示、时间文字提示、音量控制器及音量文字提示、退出按钮、播放按钮,暂停按钮 在Canvas下创建一个Script脚本:获取…...

如何做接口测试?
今天来聊聊接口测试,现在是2024年了,打开招聘网站随便点开一个招聘帖子,几乎都可以看到岗位JD要求写着有接口测试经验优先。其重要性可见一斑! 目前,凡是好一点稍具规模的公司哪怕是大厂外包也几乎都要求会接口测试&a…...

U盘打不开提示格式化怎么办,U盘提示格式化数据恢复
U盘打不开提示格式化怎么办?在使用U盘的过程中,有时候我们可能会遇到U盘打不开的情况,并且提示需要格式化才能继续使用。这种情况下,我们应该如何处理呢?U盘承载着无数重要的数据,里面存放着是大家多年辛勤努力的结晶,这些文件见证很多东西。突然打不开,并提示格式化,…...

LeetCode - 存在重复元素
219. 存在重复元素 II 这道题可以用两个方法解决。 哈希表 从左到右遍历数组,并将数组的下标存到hash中,在遍历数字的过程中,如果hash中不存在nums[i],将nums[i]加入到hash当中,若存在,则判断下标之间的关…...

RUST egui体验
egui官方提供了web版的demo,效果还是很不错的,就是用的时候有点一头雾水,没有找到明确的指导怎么把这些组件插入到自己的application或者web。花了一天时间撸了一遍流程,记录一下,说不定以后能用到呢 >_< efram…...

详解llamaindex
什么是LlamaIndex LlamaIndex是一个用于LLM应用程序的数据框架,用于注入、结构化,并访问私有或特定领域的数据。 入门教程 简单使用 # Linux export OPENAI_API_KEYxxxwindows set OPENAI_API_KEYxxx# 代码中加入 API_SECRET_KEY "xxx" B…...
管理类联考–复试–英文面试–问题--规划介绍原因做法--汇总
文章目录 规划介绍原因做法 规划 一、提问方式:问题1:读研的规划;问题2:未来五年的规划;问题3:是否计划读博 常见问法1:Can you talk about your plans in the postgraduate period?…...

成都百洲文化传媒有限公司电商新浪潮的领航者
在当今电商行业风起云涌的时代,成都百洲文化传媒有限公司以其独特的视角和专业的服务,成为了众多商家争相合作的伙伴。今天,就让我们一起走进百洲文化的世界,探索其背后的成功密码。 一、百洲文化的崛起之路 成都百洲文化传媒有限…...

【Unity】获取游戏对象或组件的常用方法
前言 在Unity开发过程中,我们经常需要获取组件,那么在Unity里如何获取组件呢? 一、获取游戏对象 1.GameObject.Find GameObject.Find 是通过物体的名称获取对象的 所以会遍历当前整个场景,效率较低 而且只能获取激活状态的物体…...

html5cssjs代码 024 响应式布局示例
html5&css&js代码 024 响应式布局示例 一、代码二、解释 该HTML代码重点在于构建一个带有响应式设计的两栏布局网页,包含页头、导航条、主要内容区(左右两列)和底部区域,并运用CSS样式设置页面元素的布局、颜色、字体、间…...
json详解
文章目录 概述JSON 发展史什么是 JSON为什么要使用 JSONJSON 的不足JSON 应该如何存储什么时候会使用 JSON1) 定义接口2) 序列化3) 生成 Token4) 配置文件 Json分类json-lib开源的JacksonGoogle的Gson阿里巴巴的FastJsonJSON.simple JSON 序列化方式有哪些消息队列中传输的数据…...
C语言之---柔性数组
1.1前记 也许你从来没有听说过柔性数组这个概念,但是它是确实存在的。 C99中,结构中的最后一个元素允许是未知大小的数组,这就是柔性数组成员。 例如: struct st_type {int i;int a[0]; }; 有些编译器会报错无法编译可以改为:…...
鸿蒙错误记录
鸿蒙错误代码记录 只是记录学习过程中的错误 只是记录学习过程中的错误 刚开始入手学习鸿蒙,错误记录一下 BussinessError 200 授权没有成功,需要先申请权限 BussinessError 3301200:定位时没有网络,打开网络即可...

Leetcode热题100:图论
Leetcode 200. 岛屿数量 深度优先搜索法: 对于这道题来说,是一个非常经典的图的问题,我们可以先从宏观上面来看问题,也就是说在不想具体算法的前提下,简单的说出如何找到所有的岛屿呢? 如图中所示&#x…...

刚进公司第一天-电脑环境搭建
写在前面 之前在公司做过一次开发小工具的分享,这两天有个同事找我学习一些小工具开发的知识,但是我发现他的基础是真的差,想学开发知识却连自己本地电脑环境都没弄好,确实,有些人工作了很久,由于自己工作中…...
kubernetes集群报 unable to load bootstrap kubeconfig处置思路
一.现状和问题现象 公司kubernetes集群是通过kubeadm工具安装的,使用1年之后证书到期。在 kubernetes control plane maste节点服务器上运行 kubeadm certs renew all 命令更新证书后,kubelet 无法正常启动,报错日志如下 Failed to run kube…...

MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用
MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用 像Windows上有自带的远程桌面连接软件.MacBook没有自带的远程连接Windows桌面的工具,需要安装软件来实现. 像远程桌面控制软件一般有 TeamViewer、向日葵远程控制, ToDesk, Microsoft Remote Desktop f…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...