iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Git使用小技巧的示例分析
  • 487
分享到

Git使用小技巧的示例分析

2023-06-28 00:06:59 487人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关git使用小技巧的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Git是一个非常强大的版本控制系统,但是Git异于常规以文件为基础的VCS系统架构,以及基于纯命令行的功

这篇文章将为大家详细讲解有关git使用小技巧的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Git是一个非常强大的版本控制系统,但是Git异于常规以文件为基础的VCS系统架构,以及基于纯命令行的功能涉及,使得初学者会难勘其妙,产生畏惧心里。

Git使用小技巧的示例分析

1、 你的 ~/.gitconfig 文件

当你第一次尝试使用 git 命令向仓库提交一个更改时,你可能会收到这样的欢迎信息:

*** Please tell me who you are.Run git config --global user.email "you@example.com" git config --global user.name "Your Name"to set your account's default identity.

你可能没有意识到正是这些命令在修改 ~/.gitconfig 的内容,这是 Git 存储全局配置选项的地方。你可以通过 ~/.gitconfig 文件来做大量的事,包括定义别名、永久性打开(或关闭)特定命令选项,以及修改 Git 工作方式(例如,git diff 使用哪个 diff 算法,或者默认使用什么类型的合并策略)。你甚至可以根据仓库的路径有条件地包含其他配置文件!所有细节请参阅 man git-config。

2、 你仓库中的 .git/config 文件

在之前的技巧中,你可能想知道 git config 命令中 –global 标志是干什么的。它告诉 Git 更新~/.gitconfig 中的“全局”配置。当然,有全局配置也意味着会有本地配置,显然,如果你省略 –global标志,git config 将改为更新仓库特有的配置,该配置存储在 .git/config 中。

在 .git/config 文件中设置的选项将覆盖 ~/.gitconfig 文件中的所有设置。因此,例如,如果你需要为特定仓库使用不同的电子邮件地址,则可以运行 git config user.email “also_you@example.com“。然后,该仓库中的任何提交都将使用你单独配置的电子邮件地址。如果你在开源项目中工作,而且希望它们显示自己的电子邮件地址,同时仍然使用自己工作邮箱作为主 Git 配置,这非常有用。

几乎任何你可以在 ~/.gitconfig 中设置的东西,你也可以在 .git/config 中进行设置,以使其作用于特定的仓库。在下面的技巧中,当我提到将某些内容添加到 ~/.gitconfig 时,只需记住你也可以在特定仓库的.git/config 中添加来设置那个选项。

3、 别名

别名是你可以在 ~/.gitconfig 中做的另一件事。它的工作原理就像命令行中的 shell —— 它们设定一个新的命令名称,可以调用一个或多个其他命令,通常使用一组特定的选项或标志。它们对于那些你经常使用的又长又复杂的命令来说非常有效。

你可以使用 git config 命令来定义别名 —— 例如,运行 git config –global –add alias.st status 将使运行 git st 与运行 git status 做同样的事情 —— 但是我在定义别名时发现,直接编辑 ~/.gitconfig文件通常更容易。

如果你选择使用这种方法,你会发现 ~/.gitconfig 文件是一个 INI 文件。INI 是一种带有特定段落的键值对文件格式。当添加一个别名时,你将改变 [alias] 段落。例如,定义上面相同的 git st 别名时,添加如下到文件:

[alias]st = status

(如果已经有 [alias] 段落,只需将第二行添加到现有部分。)

4、 shell 命令中的别名

别名不仅仅限于运行其他 Git 子命令 —— 你还可以定义运行其他 shell 命令的别名。这是一个用来处理一个反复发生的、罕见和复杂的任务的很好方式:一旦你确定了如何完成它,就可以在别名下保存该命令。例如,我有一些复刻fork的开源项目的仓库,并进行了一些本地修改。我想跟上项目正在进行的开发工作,并保存我本地的变化。为了实现这个目标,我需要定期将来自上游仓库的更改合并到我复刻的项目中 —— 我通过使用我称之为upstream-merge 的别名来完成。它是这样定义的:

upstream-merge = !"git fetch origin -v && git fetch upstream -v && git merge upstream/master && git push"

别名定义开头的 ! 告诉 Git 通过 shell 运行这个命令。这个例子涉及到运行一些 git 命令,但是以这种方式定义的别名可以运行任何 shell 命令。

(注意,如果你想复制我的 upstream-merge 别名,你需要确保你有一个名为 upstream 的 Git 远程仓库,指向你已经分配的上游仓库,你可以通过运行 git remote add upstream 来添加一个。)

5、 可视化提交图

如果你在一个有很多分支活动的项目上开发,有时可能很难掌握所有正在发生的工作以及它们之间的相关性。各种图形用户界面工具可让你获取不同分支的图片并在所谓的“提交图表”中提交。例如,以下是我使用 GitLab提交图表查看器可视化的我的一个仓库的一部分:

Git使用小技巧的示例分析
13个实用Git技巧13个实用Git技巧

GitLab commit graph viewer

如果你是一个专注于命令行的用户或者发现分支切换工具让人分心,那么可以从命令行获得类似的提交视图。这就是 git log 命令的 –graph 参数出现的地方:

Git使用小技巧的示例分析
13个实用Git技巧13个实用Git技巧

Repository visualized with –graph command

以下命令可视化相同仓库可达到相同效果:

git log --graph --pretty=fORMat:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit --date=relative

–graph 选项将图添加到日志的左侧,–abbrev-commit 缩短提交的 SHA 值,–date=relative 以相对方式表示日期,以及 –pretty 来处理所有其他自定义格式。我有个 git lg 别名用于这个功能,它是我最常用的 10 个命令之一。

6、 更优雅的强制推送

有时,你越是想避开越避不开,你会发现你需要运行 git push –force 来覆盖仓库远程副本上的历史记录。你可能得到了一些反馈,需要你进行交互式变基rebase,或者你可能已经搞砸了,并希望隐藏“罪证”。

当其他人在仓库的远程副本的同一分支上进行更改时,会发生强制推送的危险。当你强制推送已重写的历史记录时,这些提交将会丢失。这就是 git push –force-with-lease 出现的原因 — 如果远程分支已经更新,它不会允许你强制推送,这确保你不会丢掉别人的工作。

7、 git add -N

你是否使用过 git commit -a 在一次行动中提交所有未完成的修改,但在你推送完提交后才发现 git commit -a 忽略了新添加的文件?你可以使用 git add -N (想想 “notify”) 来解决这个问题,告诉 Git 在第一次实际提交它们之前,你希望在提交中包含新增文件。

8、 git add -p

使用 Git 时的最佳做法是确保每次提交都只包含一个逻辑修改 —— 无论这是修复错误还是添加新功能。然而,有时当你在工作时,你的仓库中的修改最终应该使用多个提交。你怎样才能设法把事情分开,使每个提交只包含适当的修改呢?git add –patch 来拯救你了!

这个标志会让 git add 命令查看你工作副本中的所有变化,并为每个变化询问你是否想要将它提交、跳过,或者推迟决定(你可以在运行该命令后选择 ? 来查看其他更强大的选项)。git add -p 是生成结构良好的提交的绝佳工具。

9、 git checkout -p

与 git add -p 类似,git checkout 命令也接受 –patch 或 -p 选项,这会使其在本地工作副本中显示每个“大块”的改动,并允许丢弃它 —— 简单来说就是将本地工作副本恢复到更改之前的状态。

这真的很棒。例如,当你追踪一个 bug 时引入了一堆调试日志语句,修正了这个 bug 之后,你可以先使用 git checkout -p 移除所有新的调试日志,然后 git add -p 来添加 bug 修复。没有比组合一个优雅的、结构良好的提交更令人满意!

10、 变基时执行命令

有些项目有一个规则,即存储库中的每个提交都必须处于可工作状态 —— 也就是说,在每次提交时,应该可以编译该代码,或者应该运行测试套件而不会失败。 当你在分支上工作时,这并不困难,但是如果你最终因为某种原因需要变基rebase时,那么需要逐步完成每个变基的提交以确保你没有意外地引入一个中断,而这个过程是乏味的。

幸运的是,git rebase 已经覆盖了 -x 或 –exec 选项。git rebase -x 将在每个提交在变基中被应用后运行该命令。因此,举个例子,如果你有一个项目,其中使用 npm run tests 运行你的测试套件,git rebase -x npm run tests 将在变基期间每次提交之后运行测试套件。这使你可以查看测试套件是否在任何变基的提交中失败,以便你可以确认测试套件在每次提交时仍能通过。

11、 基于时间的修订引用

很多 Git 子命令都接受一个修订参数来决定命令作用于仓库的哪个部分,可以是某次特定的提交的 SHA1 值,一个分支的名称,甚至是一个符号性的名称如 HEAD(代表当前检出分支最后一次的提交),除了这些简单的形式以外,你还可以附加一个指定的日期或时间作为参数,表示“这个时间的引用”。

这个功能在某些时候会变得十分有用。当你处理最新出现的 bug,自言自语道:“这个功能昨天还是好好的,到底又改了些什么”,不用盯着满屏的 git log 的输出试图弄清楚什么时候更改了提交,你只需运行 git diff HEAD@{yesterday},看看从昨天以来的所有修改。这也适用于更长的时间段(例如 git diff HEAD@{‘2 months aGo’}),以及一个确切的日期(例如 git diff HEAD@{‘2010-01-01 12:00:00’})。

你也可以将这些基于日期的修订参数与使用修订参数的任何 Git 子命令一起使用。在 gitrevisions 手册页中有关于具体使用哪种格式的详细信息。

12、 全知的 reflog

你是不是试过在变基时干掉过某次提交,然后发现你需要保留那个提交中一些东西?你可能觉得这些信息已经永远找不回来了,只能重新创建。但是如果你在本地工作副本中提交了,提交就会被添加到引用日志(reflog)中 ,你仍然可以访问到。

运行 git reflog 将在本地工作副本中显示当前分支的所有活动的列表,并为你提供每个提交的 SHA1 值。一旦发现你变基时放弃的那个提交,你可以运行 git checkout 跳转到该提交,复制任何你需要的信息,然后再运行 git checkout HEAD 返回到分支最近的提交去。

关于“Git使用小技巧的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Git使用小技巧的示例分析

本文链接: https://www.lsjlt.com/news/314903.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Git使用小技巧的示例分析
    这篇文章将为大家详细讲解有关Git使用小技巧的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Git是一个非常强大的版本控制系统,但是Git异于常规以文件为基础的VCS系统架构,以及基于纯命令行的功...
    99+
    2023-06-28
  • CSS应用中小技巧代码的示例分析
    小编给大家分享一下CSS应用中小技巧代码的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.清除浮动方法1:#test{...
    99+
    2024-04-02
  • Visual Studio使用小技巧之区块选择的示例分析
    这篇文章主要介绍Visual Studio使用小技巧之区块选择的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区块选择(box selection)大家应该都很熟悉了,就是按住Alt键,然后拖动鼠标,跨越多行...
    99+
    2023-06-17
  • ES6小技巧之代替lodash的示例分析
    这篇文章主要介绍ES6小技巧之代替lodash的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Javascript ES6标准实行后,Lodash或者Ramada中的一些功能...
    99+
    2024-04-02
  • css使用技巧实例分析
    今天小编给大家分享一下css使用技巧实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2024-04-02
  • css技巧使用实例分析
    今天小编给大家分享一下css技巧使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2024-04-02
  • win101903使用技巧实例分析
    这篇文章主要讲解了“win101903使用技巧实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win101903使用技巧实例分析”吧!1.调出win10表情包,按【Windows 徽标...
    99+
    2023-07-02
  • Python使用技巧实例分析
    今天小编给大家分享一下Python使用技巧实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。first库没错,就是fir...
    99+
    2023-07-02
  • Vue使用技巧实例分析
    这篇文章主要介绍“Vue使用技巧实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue使用技巧实例分析”文章能帮助大家解决问题。1、将一个 prop 限制在一个类型的列表中我们在使用 prop...
    99+
    2023-06-29
  • Git使用的小技巧有哪些
    这篇文章主要为大家展示了“Git使用的小技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Git使用的小技巧有哪些”这篇文章吧。在日常工作中,经常会用到Git操作。但是对于新人来讲,刚上来...
    99+
    2023-06-27
  • CSS高级实用技巧的示例分析
    本篇文章给大家分享的是有关CSS高级实用技巧的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用 :not() 在菜单上应用/取消应用...
    99+
    2024-04-02
  • git使用小技巧有哪些
    本篇内容主要讲解“git使用小技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“git使用小技巧有哪些”吧!1、 你的 ~/.gitconfig 文件当你第一次尝试使用 git 命令向仓库...
    99+
    2023-06-27
  • git使用中的小技巧有哪些
    这篇文章给大家分享的是有关git使用中的小技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。1、Git 中的自动纠错我...
    99+
    2023-06-28
  • HTML5中Canvas画线技巧的示例分析
    这篇文章主要为大家展示了“HTML5中Canvas画线技巧的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5中Canvas画线技巧的示例分析”这...
    99+
    2024-04-02
  • VB.NET数据绑定应用技巧的示例分析
    这篇文章主要介绍了VB.NET数据绑定应用技巧的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。VB.NET编程语言的推出为开发者又增加了一种语言的选择。他们可以利用这...
    99+
    2023-06-17
  • bootstrap中table操作技巧的示例分析
    这篇文章主要为大家展示了“bootstrap中table操作技巧的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“bootstrap中table操作技巧的...
    99+
    2024-04-02
  • VS2005代码相关技巧的示例分析
    这篇文章主要为大家分析了VS2005代码相关技巧的示例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“VS2005代码相关技巧的示例分析”的知识吧。VS2...
    99+
    2023-06-17
  • git常用命令的示例分析
    本篇文章给大家分享的是有关git常用命令的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。git能敏捷的处理任何大小的项目,因为git是一款免费、开源的分布式版本控制系统...
    99+
    2023-06-28
  • 实用的CSS技巧实例分析
    本篇内容介绍了“实用的CSS技巧实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 假设你在创建一个...
    99+
    2024-04-02
  • Python常用技巧实例分析
    这篇“Python常用技巧实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python常用技巧实例分析”文章吧。1.字...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作