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

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...