当前位置: 首页 > 科技观察

快速提升开发者Git水平的10个小窍门

时间:2023-03-23 01:24:36 科技观察

最近我们推出了两篇教程:熟悉Git的基本功能,让你在开发团队中熟练使用Git。我们讨论的命令足以让开发人员使用Git轻松使用。在本文中,我们尝试探讨如何有效地管理您的时间并充分利用Git提供的功能。注意:在本文中,一些命令包含用方括号括起来的部分(例如:gitadd-p[file_name])。在这些示例中,如果没有方括号,您将插入必要的数字、标识符等。1、Git自动补全如果使用命令行工具运行Git命令,每次都要手动输入各种命令,非常烦人。要解决这个问题,您可以启用Git的自动完成功能,只需几分钟即可完成。要获取此脚本,请在Unix系统上运行以下命令:cd~curlhttps://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.bashfi虽然我们前面提到过这一点,但并未强调足够的。如果你想使用git的全部功能,你一定要切换到命令行界面!2.忽略Git中的文件您是否对出现在Git存储库中的那些已编译文件(例如.pyc)感到恼火?还是您已经受够了并将它们全部添加到Git存储库?好吧,这里有一种方法可以告诉Git忽略某些文件和文件夹。只需创建一个名为.gitignore的文件并列出您不想让Git跟踪的文件和文件夹。您还可以使用感叹号(!)添加例外。*.pyc*.exemy_db_config/!main.pyc3.谁弄乱了我的代码?出现问题时首先责怪他人是人性的一部分。如果您的生产服务器出现故障,使用gitblame命令可以轻松找出罪魁祸首。该命令可以显示文件中每一行的作者、最近的更改提交和提交时间。gitblame[file_name]在下面的屏幕截图中,您可以看到该命令如何搜索较大的目录。4.查看存储库历史我们在上一节中学习了如何使用gitlog,但是,您还应该了解另外三个选项。--oneline-压缩模式,在每个提交旁边显示压缩的提交哈希码和提交消息,显示在一行中。--graph-图形模式,使用此选项将在输出的左侧绘制基于文本的历史信息表示图。如果您正在查看单个分支的历史记录,则此选项无效。--all-显示所有分支的历史结合这些选项,输出将如下所示:5.永远不会忘记Commits假设你不小心提交了一些你不想要的东西并且必须这样做一次Forceresettorestoreto以前的状态。然后,您意识到您在此过程中丢失了一些其他信息,并希望将其取回,或者至少看一看。这正是gitreflog可以做的。一个简单的gitlog命令可以显示最后一次提交,以及它的父提交,以及它父的父亲等。gitreflog列出了head曾经指向的一系列提交。请注意,它们仅存在于您的本地机器上;它们不是您存储库的一部分,也不包含在推送和合并操作中。如果我运行gitlog命令,我可以看到一些提交,它们都是我存储库的一部分:但是,gitreflog命令显示了一个提交(b1b0ee9–HEAD@{4}),这正是我在执行时丢失的内容强制重置:#p#6。对暂存文件的部分更改一般来说,最好创建一个基于特性的提交,这意味着每个提交必须代表一个新特性的生成或者是一个错误修复。如果您修复了两个错误或添加了多个新功能但没有提交这些更改怎么办?在这种情况下,您可以将这些更改放在一次提交中。但更好的方法是暂存文件并单独提交。例如,您对一个文件进行了多项更改,并希望分别提交它们。在这种情况下,您可以将-p参数gitadd-p[file_name]添加到添加命令中。下面演示一下,在file_name文件中添加了3行文本,但是只想提交***行和第三行。我们先看看gitdiff显示的结果:再看看add命令加上-p参数是什么样子的?似乎Git假定所有更改都是针对同一事物的,因此它将它们全部放在一个块中。您有以下选项:键入y以暂存块类型n而不是暂存类型e手动编辑块类型d以退出或转到下一个文件类型s以拆分块在我们的例子中,最终想要拆分成更小的部分,然后有选择地添加或省略其中的一些。如您所见,我们添加了第一行和第三行并忽略了第二行。之后您可以查看存储库状态并进行提交。7.压缩多次提交当你提交代码进行代码审查或创建拉取请求时(这在开源项目中经常发生),你的代码将被要求在被接受之前进行一些更改。因此,您进行了更改,直到下一次审核才要求您进行更改。在必须进行另一次更改之前,您已经进行了一些额外的提交。理想情况下,您可以使用rebase命令将多个提交压缩为一个。gitrebase-iHEAD~[number_of_commits]如果你想压缩***两次提交,你需要运行下面的命令。gitrebase-iHEAD~2运行此命令时,您将看到一个交互式界面,其中列出了许多提交并让您选择哪些需要压缩。理想情况下,您选择最后一次提交并压缩所有其他旧提交。然后将要求您输入新提交的提交信息。这个过程实质上是重写了你的提交历史。#p#8。隐藏未提交的更改你正在修复一个错误或一个功能,突然你被要求展示你的工作。而你现在所做的工作还不够提交,现阶段不能显示(不能回到更改前)。在这种情况下,gitstash可以帮助你。stash本质上接受所有更改并将它们存储起来以备将来使用。要存储您的更改,您只需运行以下命令-gitstash想要检查存储列表,您可以运行以下命令:可以看到每个stash都有一个标识符,一个唯一的编号(尽管在这种情况下我们只有一个stash)。如果你只是想为applystash留出空间,你应该添加一个特定的标识符来应用:gitstashapplystash@{2}9.检查丢失的提交虽然reflog是检查丢失的提交的唯一方法。但不适用于大型仓库。这就是fsck(文件系统检查)命令的用武之地。gitfsck--lost-found在这里您可以看到丢失的提交。您可以通过运行gitshow[commit_hash]来查看自提交或gitmerge[commit_hash]以来的更改,以恢复到之前的提交。gitfsck比reflog有优势。假设您删除了一个远程分支并关闭了存储库。使用fsck可以搜索和恢复已删除的远程分支。10.CherryPick我为***保存了***优雅的Git命令。cherry-pick命令是迄今为止我最喜欢的git命令,无论是它的含义还是它的作用。简而言之,cherry-pick从不同的分支中挑选出一个提交并将其与您当前的分支合并。如果您并行处理两个或多个分支,您可能会发现所有分支中都存在一个错误。如果你在一个分支中解决它,你可以使用cherry-pick命令将它提交到其他分支,而不会弄乱其他文件或提交。让我们想象一个有用的场景。我现在有两个分支,我想挑选提交b20fd14:Cleanedjunk到另一个。我切换到我想要cherry-pick的分支并运行以下命令:gitcherry-pick[commit_hash]虽然这次我们做了一个干净的cherry-pick,但你应该知道这个命令可能会产生冲突。所以使用时请格外小心。总结说说,来到了文章的***。我认为这些技能会让你的Git水平更上一层楼。Git是最好的,它几乎可以做任何你能想到的事情。因此,时刻挑战你的Git水平。***您很可能会学到新东西。英文:10TipstoPushYourGitSkillstoNextLevel翻译自:http://www.oschina.net/translate/10-tips-git-next-level