开发人员需要知道的 20个Git命令行技巧

前言

大多数开发人员每天都会使用 Git,但许多人只是对其功能略知一二。

学习一些 git 命令行技巧可以改变游戏规则,让你更高效、更有成效,对版本控制更有信心。

那么,让我们深入了解每个开发人员工具包中都应该有的 20 个 Git 命令行技巧。

1. 交互式添加

此命令允许您暂存文件的部分内容而不是整个文件。当您只想提交文件中的某些更改而将其余部分留待以后处理时,这非常有用。

如何使用它:

git add -p

提示:

当您在一个文件中处理多个功能但想要单独提交它们时,请使用此功能!

2. 撤消最后一次提交

在最后一次提交中犯了错误?没问题。此命令撤消您的最后一次提交,但将更改保留在您的工作目录中,因此您可以轻松解决问题。

如何使用它:

git reset --soft HEAD~1

提示:

如果您想保留更改,请使用 --soft;如果您想撤消所有内容(包括本地更改),请使用 --hard。

3. 检查分支的上游状态

此命令从远程获取所有更新,并修剪(删除)对已从远程删除的分支的引用。

如何使用它:

git fetch --all --prune

提示:

定期运行它以避免分支列表混乱,尤其是在大型团队中工作时。

4. 快速提交修复

忘记添加文件或在提交信息中输入错误?git commit --amend 可让您更新上次提交,而无需创建新提交。

如何使用:

git commit --amend

提示:

这非常适合消除小错误,而不会用不必要的提交污染您的 Git 日志。

5. 存储您的工作

需要切换分支但又不想丢失当前更改?存储可让您保存工作而不提交,让您稍后返回。

如何使用它:

git stash

提示:

使用 git stash save "description" 添加描述,以便你以后可以快速识别你的存储。

6. 弹出你的存储

当你准备好返回到你的存储工作时,你可以将其“弹出”回你的工作目录。

如何使用它:

git stash pop

提示:

如果您想应用存储而不删除它,请使用 git stash apply。

7. 挑选提交

需要来自另一个分支的特定提交?挑选提交可让您将其应用于当前分支,而无需合并整个分支。

如何使用:

git cherry-pick <commit-hash>

提示:

当您需要反向移植错误修复或小功能时,这尤其有用。

8. 清理本地分支

一旦您完成了某个功能,就不要让旧分支残留。使用这个简单的命令清理它们。

如何使用它:

git branch -d <branch-name>

提示:

如果您需要强制删除尚未合并的分支,请使用 git branch -D <branch-name>。

9. 查看文件历史记录

使用 git log -- <file> 跟踪特定文件的演变。这会向您显示影响该文件的所有提交。

如何使用它:

git log -- <file>

提示:

添加 --stat 以查看有关更改的更多详细信息。

10. 归咎于一行代码

想知道是谁写了一行代码?git blame 可以逐行显示文件中哪些内容被谁修改。

如何使用:

git blame <filename>

提示:

将其与 git log -- <file> 结合使用可获得更详细的更改历史记录。

11. 查找错误来源

这个强大的工具会对您的提交历史记录执行二进制搜索,以查找引入错误的提交。

如何使用它:

git bisect startgit bisect badgit bisect good <older-commit-hash>

它就像 Git 的侦探模式——非常适合识别错误出现的位置,而无需手动检查每个提交。

提示:

在复杂的项目中使用它,在这些项目中您无法轻松确定何时出现问题。

12. 中止合并

如果您已开始合并但事情没有按计划进行,此命令将中止合并并返回到之前的状态。

如何使用它:

git merge --abort

它可以快速摆脱棘手的情况,让您重新开始。

提示:

在尝试合并之前,请务必确保您的工作目录是干净的。

13. 搜索提交消息

正在寻找特定的提交消息?使用 git log --grep 搜索提交消息。

如何使用它:

git log --grep="search term"

当您记住提交消息中的关键字而不是确切的提交哈希时,您可以更快地找到提交。

提示:

将其与 git log --author 结合使用,以查找特定开发人员的提交。

14. 标记提交

标签可用于标记 Git 历史记录中的特定点,例如发布。

如何使用:

git tag -a v1.0 -m "Version 1.0 release"

它有助于标记重要的里程碑,使以后轻松跳回到特定版本。

提示:

当您不需要其他元数据时,请使用轻量级标签(git tag <tagname>)。

15. 硬重置以清理工作区

需要快速摆脱未跟踪的文件和目录?此命令会将它们清除,只留下受版本控制的文件。

如何使用它:

git clean -fd

它可以清除不需要的杂乱,让您的工作区井井有条。

提示:

请谨慎使用 - 确保您以后不需要这些未跟踪的文件!

16. 查看所有 Git 操作

如果您曾经弄乱过 Git 历史记录,git reflog 就是您的安全网。它显示存储库上所有操作的日志,允许您恢复丢失的更改。

如何使用它:

git reflog

它是您的 Git 历史记录,可让您找到丢失的提交和操作。

提示:

当您认为在错误重置或变基后所有希望都破灭时,请使用它!

17. 压缩提交

想要在推送之前清理您的提交历史记录?压缩提交可让您将多个提交合并为一个,以获得更整洁的历史记录。

如何使用它:

git rebase -i HEAD~<number-of-commits>

压缩可让您的提交历史看起来精致而专业,尤其是在与团队共享时。

提示:

这非常适合在推送之前将多个小修复合并为一个清晰的提交。

18. 撤销提交

是否需要撤消特定提交而不影响您的整个历史记录?git revert 会创建一个新的提交,以撤消指定提交的更改。

如何使用它:

git revert <commit-hash>

与重置不同,它不会重写历史记录 - 它只是反转提交的效果,使其成为以干净的方式撤消错误的完美选择。

19. 查看分支图表

此命令为您提供分支历史记录的视觉概览,使您更容易查看合并、分支和提交。

如何使用它:

git log --graph --oneline --all

它是项目结构的一览视图,对于理解复杂的分支设置特别有用。

20. 自动完成

不要浪费时间输入长命令。启用 Git 自动完成功能,只需按简单的 TAB 键即可完成命令。

如何使用它:开始输入 Git 命令后,只需按 TAB 键即可。

自动完成可加快您的工作流程并有助于防止输入错误。

提示:

确保在终端中设置了 Git 自动完成功能,以大幅提高工作效率!

这些技巧不仅仅是开发环境中保持高效和井然有序的必备工具。无论您是独自编码还是在团队中工作,了解这些技巧都可以大大提高您的工作效率,让您在同事面前看起来像一个 Git 大师。

写在结尾

优联前端作为一家提供一站式企业前端解决方案的公司,以其前沿的前端技术流畅的交互动画细致的用户体验,亦能为客户打造出极具创意的网站,我们相信,通过精心设计和技术创新,可以为品牌与用户之间搭建起更加紧密的联系,实现品牌形象和市场影响力的显著提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908792.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第十一章 综合案例--“精品课程网站“开发

1.网站的开发流程 网站开发流程通常分为几个关键阶段&#xff0c;每个阶段都有其特定的任务和目标。以下是一个典型的网站开发流程&#xff1a; 1. 需求分析 目标设定&#xff1a;明确网站的目标和目的。 受众研究&#xff1a;确定目标用户&#xff0c;了解他们的需求和偏好。…

VSCode 1.82之后的vscode server离线安装

概述 因为今天在公司开发项目的时候&#xff0c;需要离线配置vscode远程开发环境&#xff0c; 根据参考链接1配置了一遍&#xff0c;不管怎么重启&#xff0c;VSCODE都还是提示下载vscode server&#xff0c;后面在官方issue上找到了解决方案 解决方案 修改Remote SSH的配置…

Linux和,FreeRTOS 任务调度原理,r0-r15寄存器,以及移植freertos(一)

目录、 1、r0-r15寄存器&#xff0c;保护现场&#xff0c;任务切换的原理 2、freertos移植 3、freertos的任务管理。 一、前言 写这篇文章的目的&#xff0c;是之前面试官&#xff0c;刚好问到我&#xff0c;移植FreeRTOS 到mcu&#xff0c;需要做哪些步骤&#xff0c;当时回…

「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现

本篇将带你实现一个滑动选择器应用&#xff0c;用户可以通过滑动条选择不同的数值&#xff0c;并实时查看选定的值和提示。这是一个学习如何使用 Slider 组件、状态管理和动态文本更新的良好实践。 关键词 UI互动应用Slider 组件状态管理动态数值更新用户交互 一、功能说明 在…

云服务器防火墙设置方法

云服务器防火墙设置方法通常包括&#xff1a;第一步&#xff1a;登录控制台&#xff0c;第二步&#xff1a;配置安全组规则&#xff0c;第三步&#xff1a;添加和编辑规则&#xff0c;第四步&#xff1a;启用或停用规则&#xff0c;第五步&#xff1a;保存并应用配置。云服务器…

数据中台一键大解析!

自从互联玩企业掀起了数据中台风&#xff0c;数据中台这个点马上就火起来了&#xff0c;短短几年数据中台就得到了极高的热度&#xff0c;一大堆企业也在跟风做数据中台&#xff0c;都把数据中台作为企业数字化转型的救命稻草&#xff0c;可是如果我告诉你数据中台并不是万能钥…

【第一个qt项目的实现和介绍以及程序分析】【正点原子】嵌入式Qt5 C++开发视频

qt项目的实现和介绍 1.第一个qt项目  &#xff08;1).创建qt工程    [1].创建一个存放qt的目录    [2].新建一个qt工程    [3].编译第一个工程    发生错误时的解决方式 二.QT文件介绍  (1).工程中文件简单介绍  (2).项目文件代码流程介绍    [1].添…

计算机网络:网络层 —— 网络地址转换 NAT

文章目录 网络地址转换 NAT 概述最基本的 NAT 方法NAT 转换表的作用 网络地址与端口号转换 NAPTNAT 和 NAPT 的缺陷 网络地址转换 NAT 概述 尽管因特网采用了无分类编址方法来减缓 IPv4 地址空间耗尽的速度&#xff0c;但由于因特网用户数量的急剧增长&#xff0c;特别是大量小…

【算法】【优选算法】双指针(下)

目录 一、611.有效三⻆形的个数1.1 左右指针解法1.2 暴力解法 二、LCR 179.查找总价格为目标值的两个商品2.1 左右指针解法2.2 暴力解法 三、15.三数之和3.1 左右指针解法3.2 暴力解法 四、18.四数之和4.1 左右指针解法4.2 暴力解法 一、611.有效三⻆形的个数 题目链接&#x…

面试题分享11月1日

1、过滤器和拦截器的区别 过滤器是基于spring的 拦截器是基于Java Web的 2、session 和 cookie 的区别、关系 cookie session 存储位置 保存在浏览器 &#xff08;客户端&#xff09; 保存在服务器 存储数据大小 限制大小&#xff0c;存储数据约为4KB 不限制大小&…

VR 创业之路:从《I Expect You To Die》到未来展望

今年是 Reality Labs 成立 10 周年&#xff0c;Meta 每周都会与不同的 XR 先驱进行交流&#xff0c;探讨他们在行业中的经历、经验教训以及对未来的展望。本次&#xff0c;他们与游戏设计师、作家兼 Schell Games CEO Jesse Schell 进行了深入交谈&#xff0c;了解了他的个人故…

【大数据学习 | kafka】简述kafka的消费者consumer

1. 消费者的结构 能够在kafka中拉取数据进行消费的组件或者程序都叫做消费者。 这里面要涉及到一个动作叫做拉取。 首先我们要知道kafka这个消息队列主要的功能就是起到缓冲的作用&#xff0c;比如flume采集数据然后交给spark或者flink进行计算分析&#xff0c;但是flume采用的…

​Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。

大家好&#xff01;今天我要向大家介绍一个超级有趣的话题——Controlnet作者的新作IC-light V2&#xff01;这个工具基于FLUX训练&#xff0c;能够支持处理风格化图像&#xff0c;并且细节表现远高于SD1.5。 想象一下&#xff0c;你有一个强大的AI助手&#xff0c;它能够根据…

危机来临前---- 力扣: 876

危机即将来临 – 链表的中间节点 描述&#xff1a; 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例&#xff1a; 何解&#xff1f; 1、遍历找到中间节点 &#xff1a; 这个之在回文链表中找…

【AI绘画】ComfyUI - AnimateDiff基础教程和使用心得

AnimateDiff是什么&#xff1f; AnimateDiff 是一个能够将个性化的文本转换为图像的扩展模型&#xff0c;它可以在无需特定调整的情况下实现动画效果。通过这个项目&#xff0c;用户可以将他们的想象力以高质量图像的形式展现出来&#xff0c;同时以合理的成本实现这一目标。随…

【docker】docker 环境配置及安装

本文介绍基于 官方存储库 docker 的环境配置、安装、代理配置、卸载等相关内容。 官方安装文档说明&#xff1a;https://docs.docker.com/engine/install/ubuntu/ 主机环境 宿主机环境 Ubuntu 20.04.6 LTS 安装步骤 添加相关依赖 sudo apt-get update sudo apt-get install…

一二三应用开发平台自定义查询设计与实现系列3——通用化重构

通用化重构 前面我们以一个实体为目标对象&#xff0c;完成了功能开发与调试。 在此基础上&#xff0c;我们对功能进行重构&#xff0c;使其成为平台的标准化、通用化的功能。 前端重构 首先&#xff0c;先把自定义组件挪到了平台公共组件目录下&#xff0c;如下&#xff1…

国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案

一、方案背景 在当代建筑施工领域&#xff0c;安全监管和防盗监控是保障工程顺利进行和资产安全的关键措施。随着科技进步&#xff0c;传统的监控系统已不足以应对现代工地的安全挑战。因此&#xff0c;基于国标GB28181视频平台EasyCVR的工地防盗视频监控系统应运而生&#xf…

征程 6 工具链性能分析与优化 2|模型性能优化建议

01 引言 为了应对低、中、高阶智驾场景&#xff0c;以及当前 AI 模型在工业界的应用趋势&#xff0c;地平线推出了征程 6 系列芯片。 在软硬件架构方面&#xff0c;征程 6 不仅保持了对传统 CNN 网络的高效支持能力&#xff0c;还强化了对 Transformer 类型网络的支持&#xf…

【真题笔记】16年系统架构设计师要点总结

【真题笔记】16年系统架构设计师要点总结 存储部件接口嵌入式处理器产品配置配置管理用户文档系统文档CMM&#xff08;能力成熟度模型&#xff09;螺旋模型敏捷软件开发的方法学软件工具面向对象的分析模型设计模型COP&#xff08;面向构件的编程&#xff09;构件原子构件模块S…