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

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

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

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

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...