当前位置: 首页 > 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…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

在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…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...