Git 是最常用的版本控制系统之一,它被用于私有系统和公共托管网站上的各种开发工作。无论我对 Git 有多精通,似乎总有功能有待发现。以下是七个改变我使用 Git 方式的技巧。
1. Git 中的自动纠正
我们有时都会犯拼写错误,但是如果你启用了 Git 的自动纠正功能,你可以让 Git 自动修复拼写错误的子命令。
假设你想用 git status
检查状态,但你不小心输入了 git stats
。 在正常情况下,Git 会告诉你“stats”不是一个有效的命令
$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.
The most similar command is
status
为了避免类似的情况,在 Git 配置中启用 Git 自动纠正
$ git config --global help.autocorrect 1
如果你希望此设置仅应用于当前存储库,请省略 --global
选项。
此命令启用自动纠正功能。 在Git 文档中有一个深入的教程,但尝试与上述相同的错误命令可以让你很好地了解此配置的作用
$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.
On branch master
Your branch is up to date with ‘origin/master’.
nothing to commit, working tree clean
Git 现在不会建议一个替代子命令,而是直接运行排名最高的建议,在本例中是 git status。
2. 统计你的提交
你可能需要统计你的提交的原因有很多。 许多开发人员统计提交的数量,以判断何时增加构建版本号,或者只是为了了解项目的进展情况。
统计你的提交非常容易和直接; 这里是 Git 命令
$ git rev-list --count
在上面的命令中,branch-name 应该是你当前存储库中的有效分支名称。
$ git rev-list –count master
32
$ git rev-list –count dev
34
3. 优化你的仓库
你的代码存储库不仅对你,而且对你的组织都很有价值。 你可以通过一些简单的做法来保持存储库的清洁和最新。 最好的做法之一是使用 .gitignore 文件。 通过使用此文件,你告诉 Git 不要存储许多不需要的文件,例如二进制文件,临时文件等等。
要进一步优化你的存储库,你可以使用 Git 垃圾回收。
$ git gc --prune=now --aggressive
当你或你的团队大量使用 pull 或 push 命令时,此命令会很有帮助。
此命令是一个内部实用程序,用于清除存储库中无法访问或“孤立”的 Git 对象。
4. 备份未跟踪的文件
在大多数情况下,删除所有未跟踪的文件是安全的。 但是很多时候,在某些情况下,你想要删除,但也要创建未跟踪文件的备份,以备将来需要时使用。
Git,以及一些 Bash 命令管道,可以轻松地为你的未跟踪文件创建一个 zip 存档。
$ git ls-files --others --exclude-standard -z |\
xargs -0 tar rvf ~/backup-untracked.zip
上面的命令创建一个名为 backup-untracked.zip 的存档(并排除 .gitignore 中列出的文件)
5. 了解你的 .git 文件夹
每个存储库都有一个 .git 文件夹。 这是一个特殊的隐藏文件夹。
$ ls -a
. … .git
Git 主要与两件事一起工作
- 工作树(当前检出中文件的状态)
- 你的 Git 存储库的路径(特别是 .git 文件夹的位置,其中包含版本控制信息)
此文件夹存储所有引用和其他重要细节,例如配置,存储库数据,HEAD 的状态,日志等等。
如果删除此文件夹,则不会删除源代码的当前状态,但会删除你的远程信息,例如你的项目历史记录。 删除此文件夹意味着你的项目(至少是本地副本)不再受版本控制。 这意味着你无法跟踪你的更改;你无法从远程拉取或推送。
通常,你不需要在你的 .git 文件夹中做太多事情,或者应该做太多事情。 它由 Git 管理,并且被认为是几乎禁止访问的。 但是,此目录中存在一些有趣的工件,包括 HEAD 的当前状态
$ cat .git/HEAD
ref: refs/heads/master
它还可能包含存储库的描述
$ cat .git/description
这是一个未命名的存储库;编辑此文件“description”来命名存储库。
Git 钩子文件夹也在这里,附带示例钩子文件。 你可以阅读这些示例,以了解通过 Git 钩子可以实现的功能,你也可以阅读 Seth Kenlon 的 Git 钩子介绍。
6. 查看另一个分支的文件
有时你想要查看来自另一个分支的文件的内容。 使用一个简单的 Git 命令即可实现,而无需实际切换你的分支。
假设你有一个名为 README.md 的文件,它在 main 分支中。 你正在处理一个名为 dev 的分支。
使用以下 Git 命令,你可以从终端执行此操作。
$ git show main:README.md
执行此命令后,你可以在终端中查看文件的内容。
7. 在 Git 中搜索
你可以像专业人士一样用一个简单的命令在 Git 中搜索。 更好的是,即使你不确定你在哪个提交甚至分支中进行了更改,你也可以在 Git 中搜索。
$ git rev-list --all | xargs git grep -F ‘’
例如,假设你想在你的存储库中搜索字符串“font-size: 52 px;”
$ git rev-list –all | xargs git grep -F ‘font-size: 52 px;’
F3022…9e12:HtmlTemplate/style.css: font-size: 52 px;
E9211…8244:RR.Web/Content/style/style.css: font-size: 52 px;
尝试这些技巧
我希望这些高级技巧对你有所帮助,并提高你的工作效率,为你节省大量时间。
你是否有你喜欢的 Git 技巧? 在评论中分享它们。
评论已关闭。