10 个技巧促使你的 Git 的技能上一个台阶 —— SitePoint

2024-04-25 16:32

本文主要是介绍10 个技巧促使你的 Git 的技能上一个台阶 —— SitePoint,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近,我们发布了一些教程促使你了解 Git 基础知识和在团队环境中使用 Git。谈论的指令已经足够帮助一个开发者在 Git 世界中生存。在这次教程中,我们尝试如何在有效的时间内充分掌握提供的 Git 特性。


说明:文中一些指令包含指令的部分在方括号中(如:git add -p [file_name])。在这些案例中,你可以不用方括号,选择插入一些必要的数字,标识符等等。


01

Git 自动完成

如果你通过命令行运行 Git 命令,每一次通过手动敲来完成是令人烦恼的。为了帮助你做到这点,你可以使 Git 命令在几分钟内自动完成。


将下列脚本运行在 Unix 系统中。

cd ~
curl https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash


接下来,在你的 ~/.bash_profile 文件中添加下面几行:


if [ -f ~/.git-completion.bash ]; then
   . ~/.git-completion.bash
fi


尽管之前提到过,我仍然不能强调其重要性:如果你想充分运用 Git 的特性,你应该明确地转变对命令行的交互!


02

忽略 Git 文件

你是否对出现在你 Git 源中编译文件(如 .pyc)感到疲倦?或者对添加这些文件至 Git 上忍无可忍?不用舍近求远,这里有一种方式可以告诉 Git 忽视特定的文件和目录。只要创建一个名字为 .gitignore 的文件,并列出你不想让 Git 处理的文件和文件夹。你可以使用感叹号(!)来特殊处理。)


*.pyc
*.exe
my_db_config/

!main.pyc


03

谁打乱了我的代码?

当某些事出现问题时,责备其他人是人类的本性。如果你的产品服务器坏掉了,很容易查明真凶 —— 只需执行下 git blame指令。这个命令会显示每一个文件中每一行代码的作者,提交会看到当前行的最后一次变化,同时也提交时间戳。


`git blame [file_name]`



在屏幕截图下,你会看到这个命令就像一个巨大的源:



04

审核源的历史

我们已经在以前的教程中了解过 git log 的运用了,但是这里仍然有你需要知道的三个选项。


  • -- online -- 将每次提交展示的信息压缩至精简的提交哈希和提交信息中,所有的展示在一行中。


  • -- graph -- 这个选项绘制了一个在输出左侧基于文本的图形展示的历史信息。如果你想看到每个分支的历史信息是无用的。

  • -- all -- 展示所有分支的历史信息。

下面是这些选项的组合:


05

永远不要失去对 Commit 的关注

让我们谈论那些你不想提交的,最后经过了一个艰难的重置回到你之前的状态。后面,你意识到这个过程丢失了一些其他的信息并想返回去,或者至少可以再次看下。这就是 git reflog 作用。


一个简单的 git log 命令可以显示最新的提交,上一次的提交,上上次的提交等等。然而,git reflog是一个被指向提交的列表。记住:这是你系统的局部,不是源的部分,不包含推送的和合并的。


如果执行 git log,我获取的提交信息是源的一部分。



然而,当你执行硬重置时,git reflog 展示了提交信息(b1b0ee9–HEAD@{4})是丢失的。



06

更改一次提交文件的分段部分

基于特性的提交通常是一个好的实践,也就是,每次提交都要展现出一个特性或修改的bug。想想如果你修复了两个bug会发生什么,或者添加多个特征却没有提交改变。在这种情况下,你可以将这些改变放在一个简单的提交中。但是,这里还有一个更好的方式,将文件单独地分段并分别提交他们。


让我们看看你做的几个改变至单个文件中,并想让他们出现在分离的提交中。在这种情况下,我们可以通过添加前缀 -p 来添加文件。


`git add -p [file_name]`

让我们来证明一致性。我已经添加了三个新行至 file_name,而且我仅想第一和第三行出现在提交信息中。让我们看看 git diff 展示给我们的信息。



让我们看看当我们添加一个前缀 -p 至 add 命令上发生了什么。



似乎 Git 假设所有的改变都是同样的,因此,将它们分成一个大块。你有下列选择:


  • 输入 y 分成块

  • 输入 n 不分块

  • 输入 e 手动编辑块

  • 输入 d 退出或者进入下一个文件

  • 输入 s 分离块

在我们的案例中,我们当然想将它分离成小块,可以有选择地添加一部分并忽略其余的。



正如你所看到的,我们已经添加第一行和第三行的信息并忽略了第二行的信息。你可以查看源的状态并提交。



07

压缩多次提交

当你提交你的代码是为了查看和创建一个新的推送请求(在开源项目中经常出现),在接受前,你可以要求改变的你的代码。你做出改变,仅仅是要求改变它以便下次查看。在你知道前,你可以做一些额外的提交。理想地,你可以使用 rabase 指令压缩它们。


`git rebase -i HEAD~[number_of_commits]`


如果你想压缩上面两次的提交,你要执行的指令在下面。


`git rebase -i HEAD~2`


在运行这条指令时,会带你来到一个交互的界面中,列出提交的信息,并要求你压缩哪一个。理想地,你会选择最新的提交并压缩上一次的。



要求你为新提交的准备提交信息。这个处理基本上会覆盖你的提交历史。



08

保存未提交的变化

让我们探讨你正在致力于某个 bug 和特征时,要求验证你的工作。你当前的工作不足够提交,并且你并不能在这个阶段给出一个证明(没有回复改变值)。在这种情况下,git stash 可以帮助你。Stash 基本上具有你所有的改变并保存它们以便你后期使用。为了保存这些变化,你需要运行以下命令:


`git stash`


为了核对保存的列表,你需要执行下面的命令:


`git stash list`

如果你想不保存和恢复未提交的变化,你可以应用下面的保存:


`git stash apply`


在最后一个截图中,你可以看到每次保存都有个标识符,一个唯一的数字(尽管我们仅仅在这种情况下保存)。如果你想只选择有选择性的保存,你可以添加特殊的标识符到 apply 命令中。


`git stash apply stash@{2}`



09

核对丢失的提交信息

尽管 reflog 是核对上次丢失的提交信息的一种方法,但在大量的源中,不是可行的。这就是 fsck(文件系统核对) 命令要做的。


`git fsck --lost-found`



在这里,你可以看到丢失的提交信息。那你可以通过运行 git show [commit_hash] 来核对改变的提交信息,或者通过执行 git merge [commit_hash] 来回复它。


git fsck 相比 reflog 有一种优势。让我们看看你删除了一个远程的分支,然后克隆源。使用 fsck,你可以查询和恢复删除的远程分支。


10

做出最佳选择

在之前,我保存了很多简洁的 Git 指令。cherry-pick 指令是迄今为止我最喜欢的 Git 命令,是由于它的字面意义和它的功能!


用最简单的术语来说,cherry-pick 是从不同的分支中选择单个提交和将它和当前分支的合并。如果你在两个或更多的分支中工作,你可能会注意到 bug 会出现所有的分支。如果你在其中一个分支解决了这个 bug,你可以使用 cherry pick 提交至其他分支,不干扰其他文件或提交。


让我们想想可以运用的场景。我有两个分支,并且我想 cherry-pick 提交 b20fd14:清理垃圾:至另外一个分支。

切换分支至我想 cherry-pick 的提交,并执行以下指令:


`git cherry-pick [commit_hash]`



尽管我们已经清除了 cherry-pick 的时间,但是你应该知道这个命令可能经常导致冲突,因此要慎用。


11

结  论

以上,总结下小技巧清单,我认为可以帮你的 Git 技能达到一个新的台阶。Git 是最好的,可以实现任何你想象的。因此,要总是尝试挑战自己使用 Git。你很有可能会学到一些新的东西!


本文转载自:众成翻译

译者:Herylee

翻译链接:http://www.zcfy.cc/article/4747

原文链接:https://www.sitepoint.com/10-tips-git-next-level


这篇关于10 个技巧促使你的 Git 的技能上一个台阶 —— SitePoint的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935201

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus