10 个 Git 技巧助你节省时间和精力
以交互方式暂存文件的各个部分以供提交
重新排列(或完全重写)分支的历史记录
1. 从另一个分支检出单个文件
你是否曾经有过文件被破坏,只想重新开始的经历?或者需要在另一个分支中获取你对某个文件所做的更改?这个命令可以让你从另一个分支中抓取一个文件。
git checkout some-other-branch -- yarn.lock
您可以使用相同的技巧从特定的提交中检出一个文件。
git checkout 9146367 -- yarn.lock
cherry-pick
如果您需要获取不需要的其他文件,这是一个有效的技巧。
2.查看没有merge commits的日志
合并提交让一些人感到厌烦。事实上,有些人宁愿永远不使用合并命令,因为他们对合并提交感到厌烦。
我个人认为它们是项目历史的重要组成部分,您不应该试图在工作流程中规避它们。
话虽如此,如果您想一眼就看到项目的历史记录,您可以使用此标志来过滤合并提交。
git log --oneline --no-merges
3. 重写你最后的提交信息
当你意外提交了拼写错误或具有误导性提交信息的内容时,这个功能就非常有用。
git commit -v --amend
这-v
是可选的,但我喜欢它,因为它显示了有关更改的大量信息,这有助于我编写更具描述性的提交消息。
4. 删除所有未跟踪的更改
相当不言自明,但如果你不熟悉这个想法:
如果您创建了一个之前在 git 历史记录中不存在的新文件,则您进行了未跟踪的更改。要开始跟踪该文件,您需要将其提交到仓库。
有时,你会在提交过程中改变主意,只想重新开始,不保留所有已进行的更改。那么,git checkout .
会删除你所做的所有已跟踪的更改,但未跟踪的更改仍然会残留。为了解决这个问题,我们有了git clean
。
git clean -f -d
5. 打印出一份炫酷的可视化日志
这个主要是为了让你看起来很酷。不过,它对于可视化你所有长期存在的分支非常有用。
git log --pretty=oneline --graph --decorate --all
尝试一下。
6. 向 git 请求变更日志
如果您正在寻找有关更改的内容和更改者的简要解释,您可以要求 git 为您提供一些看起来很像更改日志的内容。
git shortlog <commit>..HEAD
在这个例子中,<commit>
应该将其替换为你希望在日志开头指定的提交。基本上,git shortlog eafbc3c..HEAD
你的意思是:“显示从提交eafbc3c
到现在发生了什么变化。”
简短日志按提交作者分组,并显示每条提交消息的第一行。如果你的提交消息写得足够好,这应该能让你清楚地了解每条提交的实际内容。
您可以使用一些很酷的技巧,例如git shortlog HEAD~20..
获取最近 20 次提交的简短日志。
7.查看特定日期范围的日志
按照类似的思路,您可能需要查看两天内 repo 中发生了哪些变化。
幸好,git 为你保驾护航。该git log
命令接受--since
和--until
作为标志。
因此,如果我想查看 2016 年 2 月 10 日至 2016 年 2 月 19 日期间 Solidus 中发生的事情,我可以运行:
git log --since='FEB 10 2016' --until='FEB 19 2016'
现在,我可以看到墨菲在二月中旬非常活跃。
8. 列出所有 git 别名
有时您可能会为一些命令设置别名,然后稍后忘记它们,或者您使用的共享配置可能定义了一些别名。
这是我在某处发现的一个技巧,尽管它不是 git 独有的功能,但我们正在利用该git config
命令。
git config -l | grep alias | sed 's/^alias\.//g'
尝试一下,看看您是否忘记了任何别名!
9. 搜索包含关键字的提交
如果您确切知道要查找哪段代码,或者确切知道需要查找更改的关键字,则可以通过代码搜索日志。
这将为您提供以某种方式影响包含您的搜索字符串的一行代码或文本的提交列表。
git log -S"config.menu_items"
在这个例子中,我将找到以某种方式操纵字符串的提交列表config.menu_items
。
10. 超级秘密的 Git 教程列表
这不是什么秘密,但非常棒:
git help -g
尝试一下看看。🤠
Git 是一款功能强大的工具,充满了各种巧妙的技巧。这份列表并非详尽无遗,所以你应该自己探索一下,并阅读 Git 文档。欢迎在这个帖子里分享你发现的任何酷炫技巧,我热爱学习这些帮助我编写代码的工具!
如果你喜欢这篇文章,我还写了另一篇包含更多技巧的文章:你应该知道的 10 个 Git 技巧。🤖
文章来源:https://dev.to/jacobherrington/10-git-tricks-to-save-your-time-and-sanity-289h