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

Git一点通

1.Git的优势

Git是一个伟大的版本管理工具,比之svn,具有以下优势:

  • 分布式版本控制:Git是一种分布式版本控制系统,每个开发者都拥有自己的完整代码库,不需要依赖网络连接就可以进行版本控制、合并和提交操作。这样可以提高开发效率,并降低了对网络的依赖。

  • 速度快:Git的设计目标之一就是速度。相对于SVN,Git在提交、分支、合并和切换等操作上都有更快的响应速度。

  • 强大的分支管理:Git的分支管理非常强大,支持轻松创建、合并和删除分支。这使得开发人员能够轻松地进行并行开发,同时保持代码库的稳定性。

然而,Git也没能全面占领svn的市场,因为研发团队的成员不一定都是技术出身,例如策划,测试同学,svn容易上手,换成git根本搞不定。

2.Git的基本概念

首先需要了解下Git的工作区、暂存区、仓库区(本地仓库)、远程仓库的概念

  1. 工作区:你在电脑里能看到的目录,比如我们的workspace 文件夹就是一个工作区。
  2. 暂存区:.git目录下的index文件,可以用 git add 命令将工作区的文件添加到暂存区。
  3. 仓库区(本地仓库):.git目录下的objects文件夹,可以用 git commit 命令将暂存区的内容提交到仓库区。
  4. 远程仓库:远程服务器上的仓库,可以用 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是一个伟大的版本管理工具&#xff0c;比之svn&#xff0c;具有以下优势&#xff1a; 分布式版本控制&#xff1a;Git是一种分布式版本控制系统&#xff0c;每个开发者都拥有自己的完整代码库&#xff0c;不需要依赖网络连接就可以进行版本控制、合并和提交操作…...

商标转让有哪些好处 商标转让条件 商标转让流程

商标转让是企业之间转让商标权益的一种交易方式。它在商业运作中扮演着重要的角色&#xff0c;对于企业的发展和战略布局都有一定的影响。 商标转让的好处&#xff1a; 1、商标价值变现&#xff1a;企业在商标注册过程中投入了大量的时间和精力&#xff0c;通过转让可以将商标…...

诺视科技完成亿元Pre-A2轮融资,加速Micro-LED微显示芯片商业化落地

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

Unity定时播放音乐

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

如何做接口测试?

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

U盘打不开提示格式化怎么办,U盘提示格式化数据恢复

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

LeetCode - 存在重复元素

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

RUST egui体验

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

详解llamaindex

什么是LlamaIndex LlamaIndex是一个用于LLM应用程序的数据框架&#xff0c;用于注入、结构化&#xff0c;并访问私有或特定领域的数据。 入门教程 简单使用 # Linux export OPENAI_API_KEYxxxwindows set OPENAI_API_KEYxxx# 代码中加入 API_SECRET_KEY "xxx" B…...

管理类联考–复试–英文面试–问题--规划介绍原因做法--汇总

文章目录 规划介绍原因做法 规划 一、提问方式&#xff1a;问题1&#xff1a;读研的规划&#xff1b;问题2&#xff1a;未来五年的规划&#xff1b;问题3&#xff1a;是否计划读博 常见问法1&#xff1a;Can you talk about your plans in the postgraduate period&#xff1f…...

成都百洲文化传媒有限公司电商新浪潮的领航者

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

【Unity】获取游戏对象或组件的常用方法

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

html5cssjs代码 024 响应式布局示例

html5&css&js代码 024 响应式布局示例 一、代码二、解释 该HTML代码重点在于构建一个带有响应式设计的两栏布局网页&#xff0c;包含页头、导航条、主要内容区&#xff08;左右两列&#xff09;和底部区域&#xff0c;并运用CSS样式设置页面元素的布局、颜色、字体、间…...

json详解

文章目录 概述JSON 发展史什么是 JSON为什么要使用 JSONJSON 的不足JSON 应该如何存储什么时候会使用 JSON1) 定义接口2) 序列化3) 生成 Token4) 配置文件 Json分类json-lib开源的JacksonGoogle的Gson阿里巴巴的FastJsonJSON.simple JSON 序列化方式有哪些消息队列中传输的数据…...

C语言之---柔性数组

1.1前记 也许你从来没有听说过柔性数组这个概念&#xff0c;但是它是确实存在的。 C99中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就是柔性数组成员。 例如: struct st_type {int i;int a[0]; }; 有些编译器会报错无法编译可以改为&#xff1a…...

鸿蒙错误记录

鸿蒙错误代码记录 只是记录学习过程中的错误 只是记录学习过程中的错误 刚开始入手学习鸿蒙&#xff0c;错误记录一下 BussinessError 200 授权没有成功&#xff0c;需要先申请权限 BussinessError 3301200:定位时没有网络&#xff0c;打开网络即可...

Leetcode热题100:图论

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

刚进公司第一天-电脑环境搭建

写在前面 之前在公司做过一次开发小工具的分享&#xff0c;这两天有个同事找我学习一些小工具开发的知识&#xff0c;但是我发现他的基础是真的差&#xff0c;想学开发知识却连自己本地电脑环境都没弄好&#xff0c;确实&#xff0c;有些人工作了很久&#xff0c;由于自己工作中…...

kubernetes集群报 unable to load bootstrap kubeconfig处置思路

一.现状和问题现象 公司kubernetes集群是通过kubeadm工具安装的&#xff0c;使用1年之后证书到期。在 kubernetes control plane maste节点服务器上运行 kubeadm certs renew all 命令更新证书后&#xff0c;kubelet 无法正常启动&#xff0c;报错日志如下 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…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...