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

开发实战中Git的常用操作

Git基础操作

1.初始化仓库

git init

解释:在当前目录中初始化一个新的Git仓库。

2.克隆远程仓库

git clone <repository-url>

解释:从远程仓库克隆一个完整的Git仓库到本地。

3.检查当前状态

git status

解释:查看当前工作目录的状态,包括已修改、已暂存和未跟踪文件。

4.添加文件到暂存区

git add <file-name>
git add .

解释:将文件或所有修改添加到暂存区,为下次提交做准备。

5. 提交更改

git commit -m "Commit message"

解释:将暂存区中的更改提交到本地仓库。

6. 查看提交历史

git log

解释:查看项目的提交历史记录。

7. 创建新分支

git branch <branch-name>

解释:创建一个新的分支。

8. 切换分支

git checkout <branch-name>

解释:切换到指定的分支。

9. 创建并切换到新分支

git checkout -b <branch-name>

解释:创建一个新的分支并立即切换到该分支。

10. 合并分支

git merge <branch-name>

解释:将指定分支的更改合并到当前分支。

11. 删除分支

git branch -d <branch-name>

解释:删除本地分支(必须没有未合并的更改)。

12. 推送分支到远程仓库

不设置上游分支
git push origin <branch-name>
设置上游分支
git push -u origin <branch-name>

解释:将本地分支推送到远程仓库,加上-u是为了设置上游分支(即将远程仓库的分支设置为本地分支的上游分支),这样以后可以直接使用 git push 和 git pull 同步,而无需每次都指定分支名称。

13. 拉取远程分支的最新更改

git pull origin <branch-name>

解释:从远程仓库拉取指定分支的最新更改并合并到当前分支。

14. 查看分支

git branch

解释:查看所有本地分支,当前分支会有星号标记。

Git高级操作

1.查看分支图

git log --graph --oneline --all --decorate

解释:以图形方式显示提交历史

2.标签操作(Tag)

Git Tag 是一个非常实用的工具,它可以帮助我们更好地管理和标识代码版本。通过为重要的里程碑事件打上标签,我们可以更轻松地追踪项目的进展和发布历史。

创建标签

git tag <tag_name>
# 例如:
git tag v1.0.0

解释:创建轻量标签,轻量标签只是一个指向特定提交的引用,不包含其他信息。

git tag -a <tag_name> -m 'Your message here'
# 例如:
git tag -a v1.0.0 -m 'First stable version'

解释:创建一个带有消息的附注标签。

git tag -a <tag_name> <commit_hash> -m 'Your message here'
# 例如:
git tag -a v1.0.0-beta abcdef123456 -m 'Beta release'

解释:如果你想为某个特定的提交创建标签,可以在命令后加上提交哈希值(commit hash)。

查看标签

查看本地所有Tag:

git tag

获取最新的版本标签:

git describe --tags --abbrev=0

解释:你可以通过 git describe --tags --abbrev=0 命令获取最新的版本标签(注意这可能需要你先拉取远程仓库的最新数据)。

查看某个特定Tag的信息:

git show <tag_name>
# 例如:
git show v1.0.0

查看远程仓库的所有 Tag:

git ls-remote --tags origin

推送标签

推送单个 Tag 到远程仓库:

git push origin <tag-name>

推送所有本地 Tag 到远程仓库:

git push origin --tags

删除Tag

删除本地 Tag:

git tag -d <tag_name>
# 例如:
git tag -d v1.0.0

删除远程仓库的 Tag:

git push origin --delete <tag_name>
# 例如:
git push origin --delete v1.0.0

或者:

git tag -d <tag_name>  # 先删除本地标签
git push origin :refs/tags/<tag_name>  # 再删除远程标签

检出Tag

可以使用 git checkout 命令来检出 Tag,但这会使你进入“游离 HEAD”状态。

git checkout <tag_name>
# 例如:
git checkout v1.0.0

如果你想要在某个 Tag 的基础上创建一个新的分支并检出,可以使用 git checkout -b <branch_name> <tag_name>。

git checkout -b new-branch v1.0.0

检出后可以使用

git push -u origin <branch-name>

将本地分支推送到远程仓库

3.删除远程分支

git push origin --delete <branch-name>

解释:删除远程仓库中的指定分支。

4.丢弃本地更改

git checkout -- <file-name>

解释:丢弃本地对文件的未暂存更改,恢复到上一次提交的状态。

5.重置到某个提交

git reset --hard <commit-hash>

解释:将当前分支重置到指定提交,并丢弃所有后续的更改。

6.拆分提交

git rebase -i <commit-hash>

解释:交互式rebase,用于修改提交历史。

7.暂存和恢复更改

git stash
git stash pop

解释:将当前更改暂存起来,并可以稍后恢复。

常见坑点及解决方法

1. 合并冲突

坑点:在合并分支时,如果同一文件的同一部分被不同分支修改,会产生冲突。
解决方法:手动编辑冲突文件,决定如何合并更改,然后使用git add和git commit完成合并。

2. 覆盖远程分支

坑点:使用git push -f强制推送会覆盖远程分支历史,导致其他人无法正常拉取。
解决方法:尽量避免使用-f选项,如果必须使用,确保通知团队成员并协调好。

3. 提交历史混乱

坑点:频繁的、无意义的提交会使提交历史混乱。
解决方法:在合并到主分支前,使用git rebase -i整理提交历史,合并相似的提交。

4. 丢失未跟踪文件

坑点:运行git clean -f会删除所有未跟踪的文件。
解决方法:在运行该命令前使用git clean -n查看将被删除的文件列表,确认无误后再执行。

5. 分支冲突

坑点:创建新分支时未基于最新的主分支,导致合并时产生大量冲突。
解决方法:在创建新分支前,确保主分支是最新的(使用git pull origin main)。

6. 无法回滚

坑点:误用git reset --hard导致无法回滚到之前的状态。
解决方法:使用git reflog查看所有操作历史,找到误操作前的commit hash,然后回滚。

7. 未推送提交

坑点:本地提交后忘记推送到远程仓库,导致其他人无法获取最新更改。
解决方法:提交后及时使用git push将更改推送到远程仓库,并与团队成员保持沟通。

8. 错误的rebase操作

坑点:在公共分支上使用git rebase会导致其他人拉取时产生冲突。
解决方法:避免在公共分支上使用rebase,可以使用merge代替。

通过掌握这些操作和注意这些坑点,可以有效地使用Git进行版本控制,并避免常见的错误和问题。

相关文章:

开发实战中Git的常用操作

Git基础操作 1.初始化仓库 git init解释&#xff1a;在当前目录中初始化一个新的Git仓库。 2.克隆远程仓库 git clone <repository-url>解释&#xff1a;从远程仓库克隆一个完整的Git仓库到本地。 3.检查当前状态 git status解释&#xff1a;查看当前工作目录的状态…...

python调用chrome浏览器自动化如何选择元素

功能描述&#xff1a;在对话框输入文字&#xff0c;并发送。 注意&#xff1a; # 定位到多行文本输入框并输入内容。在selenium 4版本中&#xff0c;元素定位需要填写父元素和子元素名。 textarea driver.find_element(By.CSS_SELECTOR,textarea.el-textarea__inner) from …...

深入理解JS中的排序

在JavaScript开发中,排序是一项基础而重要的操作。本文将探讨JavaScript中几种常见的排序算法,包括它们的原理、实现方式以及适用场景。 1、冒泡排序 1.1、原理 通过比较相邻两个数的大小,交换位置排序:如果后一个数比前一个数小,则交换两个数的位置,重复这个过程,直…...

Kafka之存储设计

文章目录 1. 分区和副本的存储结构1. 分区和副本的分布2. 存储目录结构3. 文件描述 2. 相关配置3. 数据文件类型4. 数据定位原理LogSegment 类UnifiedLog 类 5. 副本数据同步HW水位线LEO末端偏移量HW更新原理 6. 数据清除 1. 分区和副本的存储结构 在一个多 broker 的 Kafka 集…...

Python面试整理-Python中的函数定义和调用

在Python中,函数是一种封装代码的方式,使得代码模块化和复用性更强。定义和调用函数是Python编程中的基本技能。以下是关于如何在Python中定义和调用函数的详细介绍: 函数定义 函数在Python中使用def关键字进行定义。函数体开始前,通常有一个可选的文档字符串(docstring)…...

HTTP协议、Wireshark抓包工具、json解析、天气爬虫

HTTP超文本传输协议 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff1a; 全称超文本传输协议&#xff0c;是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP 协议的重要特点&#xff1a; 一发一收…...

electron项目中实现视频下载保存到本地

第一种方式&#xff1a;用户自定义选择下载地址位置 渲染进程 // 渲染进程// 引入 import { ipcRenderer } from "electron";// 列表行数据下载视频操作&#xff0c;diffVideoUrl 是视频请求地址 handleDownloadClick(row) {if (!row.diffVideoUrl) {this.$message…...

基于chrome插件的企业应用

一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon&#xff0c;一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…...

unittest框架和pytest框架区别及示例

unittest框架和pytest框架区别及示例 类型unittest框架pytest框架unittest框架示例pytest框架示例安装python内置的一个单元测试框架,标准库&#xff0c;不需要安装第三方单元测试库&#xff0c;需要安装使用时直接引用 import unittest安装命令&#xff1a;pip3 install pyte…...

IDEA性能优化方法解决卡顿

文章目录 前言一、可以采取以下措施&#xff1a;二、VM Options的参数解释1. 内存设置2. 性能调优3. GC&#xff08;垃圾回收&#xff09;调优4. 调试和诊断5. 其它设置6.设置 VM Options 的步骤&#xff1a; 总结 前言 我们在使用 IntelliJ IDEA的时候有时候会觉得卡顿&#x…...

Mysql集合转多行

mysql 集合转多行 SELECT substring_index(substring_index(t1.group_ids, ,, n), ,, -1) AS group_id FROM (select 908,909 as group_ids ) t1, (SELECT rownum : rownum 1 AS n FROM ( SELECT rownum : 0 ) r, orders ) t2 WHERE n < ( LENGTH( t1.group_ids ) - LENGT…...

MFC:只允许产生一个应用程序实例的具体实现

在MFC&#xff08;Microsoft Foundation Class&#xff09;应用程序中&#xff0c;如果你想限制只允许产生一个应用程序实例&#xff0c;通常会使用互斥体&#xff08;Mutex&#xff09;来实现。这可以确保如果用户尝试启动第二个实例时&#xff0c;它会被阻止或将焦点返回到已…...

深入理解TCP/IP协议中的三次握手

&#x1f44d; 个人网站&#xff1a;【洛秋资源小站】 深入理解TCP/IP协议中的三次握手 在计算机网络中&#xff0c;TCP/IP协议是通信的基石。理解TCP/IP协议中的三次握手是掌握网络通信的关键步骤之一。本文将详细解释TCP/IP协议中的三次握手过程&#xff0c;探讨其工作原理&…...

【React】事件绑定、React组件、useState、基础样式

React 教程 目录 事件绑定 1.1. 基础实现 1.2. 使用事件参数 1.3. 传递自定义参数 1.4. 同时传递事件对象和自定义参数 React 组件 2.1. 组件是什么 2.2. 组件基础使用 useState&#xff1a;状态管理 3.1. 基础使用 3.2. 状态的修改规则 3.3. 修改对象状态 基础样式 4.1. 行…...

x264、x265、libaom 编码对比实验

介绍 x264 是一个开源的高性能 H.264/MPEG-4 AVC 编码器,它以其优秀的压缩比和广泛的适用性而闻名。x265 是一种用于将视频流编码成 H.265/MPEG-H HEVC 压缩格式的免费软件库和应用程序,以其下一代压缩能力和卓越的质量而闻名 。作为 x264 的继任者,x265 支持 HEVC 的 Main、…...

c++网络编程实战——开发基于ftp协议的文件传输模块(二) 配置ftp服务与手动执行ftp命令

配置FTP服务 一.前言 博主的环境是阿里云服务器&#xff0c;操作系统版本为 ubuntu20.04,一下所有操作都基于以上环境下进行的操作&#xff0c;同时为了简化操作我将开放同一个云服务器的不同端口&#xff0c;让它同时充当服务端和客户端&#xff0c;大家如果想测试效果更好且…...

Sphinx 安装相关指令解释

安装指令 pip3 install sphinx-autobuildpip3 install sphinx_rtd_themepip3 install sphinx_markdown_tablepip3 install sphinx_markdown_tables pip3 install sphinx-autobuild 功能&#xff1a;安装 sphinx-autobuild 包。作用&#xff1a;sphinx-autobuild 是一个工具&am…...

npm下载包-更改默认缓存目录

npm&#xff08;Node Package Manager&#xff09;的缓存目录是npm用于存储已下载包的本地位置&#xff0c;以便在后续安装相同包时能够快速复用&#xff0c;从而节省时间和带宽。npm缓存目录的具体位置会根据操作系统的不同而有所差异。 Windows系统 在Windows系统中&#x…...

PWM再理解(1)

前言 昨天过于劳累&#xff0c;十点睡觉&#xff0c;本来想梳理一下PWM&#xff0c;今天补上。 PWM内涵 PWM全称&#xff1a;Pulse Width Modulation&#xff0c;也就是脉宽调制的意思&#xff0c;字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…...

CSPVD 智慧工地安全帽安全背心检测开发包

CSPVD SDK适用于为各种智慧工地应用增加安全防护穿戴合规的检测能力&#xff0c;能够有效检测未戴安全帽和未穿 安全背心的人员&#xff0c;提供Web API和原生API。官方下载&#xff1a;CSPVD工地安全防护检测 1、目录组织 CSPVD开发包的目录组织说明如下&#xff1a; xlpr_…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统

核心速览 研究背景 ​​研究问题​​&#xff1a;这篇文章要解决的问题是当前大型语言模型&#xff08;LLMs&#xff09;在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色&#xff0c;但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成&#xff08;RA…...