git 12个技巧

C# LibUsbDotNet 在USB-CDC设备的上位机应用 C# LibUsbDoNet 在 USB-CDC设备的上位机应用 阅读详情

1.使用“git diff”来折叠多行


用git diff经常会出现很多内容,导致很多内容被遮住了,让人很是苦恼,幸运的是这里有个解决方案。

如果你使用less作为默认的pager,只需要输入-s,就可以保证不会被diff刷屏了。

或者,你也可以使用git config设置pager来达到同样的效果:

为当前项目设置pager:

 
  1. $ git config core.pager 'less -r'  

再将pager设置的作用域设置为整个项目:

 
  1. $ git config --global core.pager 'less -r'  

2.设置全局代理


在某些网络环境下,你可能需要为git配置代理,这很简单,只需要一行命令就可以了:

 
  1. git config --global https.proxy https://user:password@address:port 

3.clone某个特定分支


在某些大型项目中,或者只是图方便,有时候你可能只希望clone某个分支,你可以这样做:

 
  1. mkdir $BRANCH 
  2. cd $BRANCH 
  3. git init 
  4. git remote add -t $BRANCH -f origin $REMOTE_REPO 
  5. git checkout $BRANCH 

4.比较某个文件和远程分支上的区别


很简单:

 
  1. git diff localbranch remotebranch filepath 

5.列出版本库中所有已删除的文件


也许你是想将其恢复,因此需要仔细确认某些merge操作,无论如何,列出版本库中所有已删除的文件会非常有帮助。你只需要这样做:

 
  1. git log --diff-filter=D --summary 

如果你想将其恢复,参照这里。

如果你不想知道是哪次commit中删除的,只需要添加一个grep delete。

 
  1. git log --diff-filter=D --summary | grep delete 

6.在版本库所有版本中搜寻一条字符串


往往你想要查找某段代码、某个函数、一个常量、一个文件,但是却找不到了。它被删除了,什么时候删除的?这个小技巧能搜索整个版本库中git diff信息,可能会花些时间,但是非常有用:

 
  1. git rev-list --all | ( 
  2.     while read revision; do 
  3.         git grep -F 'Your search string' $revision 
  4.     done 
  5. ) 

7.应用另外一个(不相关的)本地版本库中的patch


从另一个版本库中cherry-pick一条提交记录,首先需要将那个版本库作为一个远程版本库添加进来,并fetch其变化,然后cherry-pick其提交记录。

如果你追求速度,也可以使用这个未经优化的命令:

 
  1. git --git-dir=../some_other_repo/.git format-patch -k -1 --stdout <commit SHA>| git am -3 -k 

8.从新的主干中分出一个新分支


有时候你会在better_brach上工作一段时间,并准备将其设为新的master,你会怎么做?

这里是Stack Overflow上提供的常规解决方案:

1.切换到better_brach分支:

 
  1. git checkout better_branch 

2.保留better_branch分支全部内容,但是记录合并:

 
  1. git merge --strategy=ours master 

3.切回mater

 
  1. git checkout master 

4.快速合并

 
  1. git merge better_branch 

5.如果你想让合并步骤变得更清晰,可以添加commit信息。只需要修改下第二步:

 
  1. git merge --strategy=ours --no-commit master 
  2. git commit # Here add your custom message to the commit template 

9.向分支提交一个初始的空commit,保证完全复位


这样会重写历史记录,所以只能在未和任何人分享前做,否则将可能把同事者的文件破坏。

1.创建一个新的空分支,例如:newroot

 
  1. git checkout --orphan newroot 
  2. git rm --cached -r . 
  3. git clean -f -d 

2.创建空的commit

 
  1. git commit --allow-empty -m '[empty] initial commit' 

3.重新发送分支的全部内容

 
  1. git rebase --onto newroot --root master 

4.删除临时分支newroot

 
  1. git branch -d newroot 

现在master就已经包含了一个空的root commit了。

10.清空一个分支来做些不同的事


有时候你会想要从某个分支重新开始,或者打算保留一些逻辑上和主干相关但是跟踪另一个跨职能方面的代码,就像GitHub项目的gh-pages。

但如果你只想重新开始某个分支,清空所有历史记录呢?

1.检出(checkout)一个分支:

 
  1. git checkout -b branch_to_zero 

2.跟上条一样,先建立增加一个初始的空commit,之后就可以通过重新设置来清空一个分支。

3.使用hard重置分支到刚刚创建的初始commit:

 
  1. git reset --hard initial_commit 

11.如何修改一个特定的commit?


当你想在推送前重做你最后的commit时,可以使用修改命令(git commit --amend)。如果你想修改的不是最后一个commit呢?

这种情况下,你可以使用git rebase,例如,你想要修改bbc643cd commit,运行下面的命令:

 
  1. $git rebase bbc643cd^ --interactive  

在默认的编辑器中选择并修改你期望修改的,然后保存修改并输入:

 
  1. $ git add <filepattern>  

现在你就可以使用

 
  1. $git commit --amend 

来修改commit,之后使用

 
  1. $ git rebase --continue  

返回之前最新的commit。

12.如何隐藏多个已修改文件中一个?


git stash --keep-index命令可以用来隐藏上次commit中没有add的东西,之后add想要提交的文件并运行相应命令就可以了。

按照下面的提示,你可以把一条老的commit提交到多个变更集中:

互动地rebase最后一条好的commit:

 
  1. git rebase -i last_good_commit 

将某些变化标记为edit:

 
  1. git reset HEAD^ 
  2. git add file1 file2 file3 

添加相应的文件:

 
  1. git add file1 file2 file3 

因此之前没有添加的文件:

 
  1. git stash --keep-index 

别忘了收尾:

 
  1. git commit 
  2. git stash pop 

有必要的话,重复第二步之后的步骤:

 
  1. git rebase --continue 
Win10/Win11下HDMI外接显示器‘代码43’报错全攻略:从驱动冲突到电源管理的深度排查 本文深入解析Win10/Win11下HDMI外接显示器‘代码43’报错的系统级解决方案,涵盖驱动冲突、电源管理、硬件检测等多维度排查方法。通过专业工具和注册表修改,帮助用户彻底解决这一常见但复杂的显示适配器问题,提升外接显示设备的稳定性。 阅读详情

相关推荐

新手教程:判断USB设备是否硬件损坏

当电脑无法识别usb设备时,别急着更换,先排查是否为硬件损坏。通过简单几步检测接口、线缆及设备本身问题,快速定位故障源头,解决usb连接异常。

weixin_35756892的博客 265

小白专场: Merge the incoming changes into the current branc和Rebase the current branch on top of the ...

一 背景介绍 使用idea更新代码时,有2个选项,一个是Merge the incoming changes into the current branch, 另一个是Rebase the current branch on top of the incoming changes。由于是多人多分支开发,笔者经常用的是Rebase这个选项。也不知道为什么用这个,看着别人也是用这个,不懂为什么要用rebase,而不用merge;在后面介绍过程中,会涉及到git merge的使用,以及对应的黄金规则,优缺点等等,

Y 5万+

USB开发全流程:从硬件设计到驱动开发实战

USB(通用串行总线)作为现代设备的标准接口,其开发涉及硬件电路设计、协议栈实现和驱动程序开发。USB协议从2.0到最新的USB4®不断演进,传输速率从480Mbps提升至40Gbps,同时支持高达100W的USB PD供电。在硬件层面,需要关注信号完整性设计,包括差分阻抗匹配、电源管理和接口芯片选型。固件开发中,描述符配置和中断处理是关键环节。Windows平台推荐使用WDF驱动框架,通过INF文件定义设备特性。实际开发中常遇到枚举失败、驱动代码43错误等问题,可通过协议分析仪和USBView工具进行诊断

weixin_29175469的博客 299

Merge the incoming changes into the current branch

1.前言 今天在使用idea来更新git项目时发现的提示: 2.翻译 (一)Merge the incoming changes into the current branch 将传入的更改合并到当前分支中(常用) (二)Rebase the current branch on top of the incoming changes 在传入更改的基础上重新建立当前分支 3.功能变化 (一)等同于在控制台执行git pull命令 ...

Ricardo的树屋 8568

USB充电原理、故障诊断与优化方案详解

USB充电是现代电子设备的核心供电方式,其本质是通过电源管理系统实现电能传输。该系统基于硬件电路与通信协议协同工作,通过枚举过程进行电流协商,确保安全供电。在工程实践中,USB充电涉及电流设置网络(N1场效应管与R1电阻)的精密控制,以及TVS二极管等保护元件的应用。典型应用场景包括移动设备充电、笔记本电脑供电等。针对常见的充电故障,如枚举失败导致的100mA限流问题,可通过更换线缆、检查端口或重置驱动等方法解决。对于Type-C接口等现代标准,还需考虑CC引脚配置和USB PD协议支持。通过优化电路布局和

weixin_27869497的博客 287

联想CM7120W MacOS14 彩色打印驱动终极方案:三星C48x系列驱动实测

本文详细解析了MacOS14系统下联想CM7120W彩色激光一体机的驱动替代方案,推荐使用三星C48x系列驱动实现完美兼容。通过实测验证,该方案不仅能解决官方驱动缺失问题,还能确保彩色打印、扫描等核心功能正常使用,显著提升Mac用户的工作效率。

weixin_32175665的博客 370

IDEA git 操作中的Merge和Rebase

Intelij-idea中的"Merge incoming changes into the current branch"和"Rebase the current branch on top of incoming changes"

weixin_43287372的博客 7082

Realtek 8188GU驱动Win11安装避坑指南

USB无线网卡驱动是Windows设备兼容性的典型技术场景,其核心在于HardwareID匹配、数字签名验证与INF文件规范性三大底层机制。Realtek 8188GU作为广泛使用的低成本USB Wi-Fi芯片,常因固件版本(bcdDevice/REV值)不一致、驱动签名过期、INF缺失[SourceDisksFiles]节及Win11 USB枚举超时等问题导致‘未知设备’或‘代码43’错误。这些问题本质是Windows驱动模型对硬件身份识别、内核安全策略与安装时序的严格约束,而非单纯驱动缺失。适用于工控盒

weixin_33922670的博客 347

merge和rebase的区别-Git实操

merge和rebase的区别-Git实操

SoulNone的博客 5147

显卡代码43排查修复全攻略:从DDU清理到mats硬件检测

Windows设备管理器中的设备状态描述是诊断硬件故障的重要窗口,而“代码43”是其中最常见也最令人困惑的提示之一。它表示设备向系统报告了异常,系统为防止风险将其停用,但该状态并不等同于硬件损坏。理解这一原理,是进行高效故障排查的基础。在实际工程场景中,从显卡、USB设备到网卡都可能触发代码43,而显卡场景最为复杂,常涉及驱动残留、供电不稳或显存物理损伤等问题。针对此类问题,成熟的修复路径包括使用DDU在安全模式下彻底清理驱动、同步更新核显驱动、调整PCIe电源管理,以及借助mats显卡检测工具对显存做深度

weixin_30745553的博客 230

Win11下Fastboot驱动安装失败的根源与安全解决方案

Fastboot是安卓设备进入底层刷机与调试的关键协议,其本质是基于USB CDC类(bInterfaceClass=0xFF, bInterfaceSubClass=0x42)的厂商自定义通信机制。在Windows系统中,设备识别依赖INF驱动匹配与数字签名验证,而Win11强化了驱动强制签名和Secure Boot策略,导致过期签名的Google官方驱动(如googleusb.inf)被拒绝加载,表现为‘Android Bootloader Interface’黄叹号或fastboot devices无

weixin_34357928的博客 478

git merge 和rebase区别

Rebase 则是重新基于一个分支进行 commit,即将当前分支从祖先的 commit 后所提交的 commit 均撤销,将他们放到一个缓存中,然后基于一个分支的后面,将缓存的 commit 按照顺序以一个个新增到该分支后面,用图表示如下,将 4 和 5 所提交的 commit 放到缓存中,然后按顺序将其新增到 6 的后面。找到两个分支的祖先 commit,然后将公共分支最新版合并到自己的分支,形成一个新的 commit 提交,用图表示如下。

riant110的博客 1482

Ubuntu:当“Wi-Fi适配器未找到”时,从排查到驱动的完整指南

本文提供了Ubuntu系统下解决“Wi-Fi适配器未找到”问题的完整指南,从临时联网方案到驱动安装与配置,涵盖了硬件状态检查、命令行工具检测、驱动安装及内核更新等关键步骤,帮助用户快速恢复网络连接。

weixin_29202687的博客 326

USB协议解析与设备开发实战指南

USB(通用串行总线)作为现代计算机外设连接的核心标准,其协议栈包含物理层、链路层、协议层和应用层四个关键层级。理解USB的分层架构对于解决实际工程问题至关重要,特别是在设备枚举、数据传输和电源管理等场景中。USB协议定义了控制传输、中断传输、批量传输和等时传输四种基本类型,分别适用于设备配置、HID设备、大容量存储和音视频传输等不同应用场景。通过分析USB转串口技术(如FT232R、CH340G等芯片)和STM32 USB开发实践,可以掌握USB设备描述符配置、端点缓冲区分配等关键技术要点。对于开发者而言

weixin_28703507的博客 278

告别Fastboot连不上!Win10/11通用ADB驱动修复与设备管理器深度使用指南

本文详细解析了Windows 10/11系统下Fastboot模式连接失败的常见问题,提供了从ADB驱动修复到设备管理器深度使用的完整解决方案。通过诊断工具使用、驱动安装技巧和高级维护方法,帮助开发者彻底解决Android设备调试连接难题,提升开发效率。

weixin_33714884的博客 386

Win10/Win11必看:PL2303HXA驱动安装避坑指南(附最新驱动下载)

本文详细解析了Win10/Win11系统下PL2303HXA驱动安装的常见问题及解决方案,包括官方驱动尝试、旧版驱动安装、驱动自动识别工具使用等。针对不同技术背景的用户提供分步指南,帮助快速解决USB转串口设备的兼容性问题,确保设备正常运行。

weixin_30752699的博客 745

USB技术演进与转串口开发实战指南

USB(通用串行总线)作为现代计算机外设连接的核心标准,其协议演进与物理接口设计直接影响设备兼容性和传输性能。从基础的控制传输到高速批量传输,USB协议栈通过四种传输类型满足不同场景需求。在嵌入式开发中,USB转串口技术(基于FTDI、CP210x等芯片)是连接微控制器与上位机的关键桥梁,涉及驱动安装、权限管理等工程实践。随着USB4引入Thunderbolt协议和Type-C接口,开发者需要掌握PD供电协商、ESD防护等硬件设计要点。本文通过协议解析、芯片对比和故障排查,系统讲解USB技术在工业控制、消费

weixin_42521843的博客 230

I2C HID设备报代码10:从ACPI到驱动栈的排查路径

在Windows设备管理器中,“该设备无法启动(代码10)”常被误判为驱动缺失,实际表示设备已完成枚举、驱动已匹配,但启动初始化链路中断。I2C HID设备依赖ACPI表描述总线地址、GPIO中断与复位资源,再由hidi2c等驱动栈完成启动;任一环节异常都会在设备节点上显示黄色感叹号。理解这一原理的价值在于,把“卸载重装、更新驱动、重启”转为按ACPI描述、控制器状态、中断资源、电源复位时序逐层定位,减少盲目试错。该思路适用于触摸板调试、驱动适配、整机维修和硬件排障场景,并自然收敛到I2C HID代码10的

weixin_34392435的博客 355
上一篇: 开发中会遇到的一些系统瓶颈
下一篇: CollabNet Subversion Edge windows版 问题详解
backzero
博客等级 码龄15年 3粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值