转:
这 10 别名让你把 git 的玩的更 6
对于咱们前端打工人来说, git 是工作中常用的一种基本工具,可能有一些人不喜欢用命令行操作 git,总是想要带图形界面的工具,当然能提供深色主题那就更好了。
尽管在 VS Code 之类的 IDE 中提供了 git 的 GUI 扩展,但仍然有很多场合需要依靠命令行(CLI)操作才行。
下面我将介绍 10 个 git 别名,这些别名可以帮你更高效的使用 git 。
关于 git 别名
git 别名一般根据用户的配置被存储在 ~/.gitconfig
中。也可以用 git config alias.s ‘status -s’
命令来手动设置别名。
你可以把接下来我将要介绍的这些 git 别名添加到 ~/.gitconfig
文件的 [alias]
块中,这一部分存储了所有别名及其命令。
查看 git 别名
git 命令行提供了很多选项,可以列出所有 git 配置和源的位置(系统,用户或本地)。用 git config --list --show-origin
命令能详细列出所有的配置和源:
[alias]
s = status
co = checkout
Git status
git status
是一个常用的命令,可以用下面这个别名为它提供一个快捷方式:
[alias]
s = status
生效后是这样:
$ git s
On branch main
Your branch is up to date with 'origin/main.
nothing to commit, working tree clean
Git checkout
我们需要经常在 git 分支之间来回切换,下面来简化一下。
添加别名:
[alias]
co = checkout
然后尝试一下:
$ git co feat/add-popup
实际上可以用快捷方式(例如 git checkout -
)来完成 git 分支的签出,这个快捷方式可以签出你所在的上一个分支。它实际上是 git checkout @{-1}
的简写,所以这个别名也可以通过 git co -
达到相同的效果。
创建一个新分支并切换到该分支
如果你经常在命令行上创建新的git分支,那么这样做可以少敲几下键盘:
[alias]
cob = checkout -b
这样用:
$ git cob feat/add-popup
Switched to a new branch 'feat/add-popup'
删除分支
也许对你来说删除分支这种操作不多,但是当你需要时可能会想不起命令应该怎么写,这时就不得不去花时间去问度娘。但是如果能给 git branch checkout
创建一个更简短好记的别名就方便多了:
[alias]
del = branch -D
这样用:
$ git del feat/add-popup
Deleted branch featureB (was b5cbv113).
列出所有分支
下面的别名用来列出所有分支,并按提交日期对它们进行排序,优先显示最新的 git 分支。
[alias]
br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
使用及输出:
$ git br
如你所见,它能提供更多的上下文信息,例如用彩色突出显示了最后一次提交中的 git commit author 的名称。
Git commit
想要更快的提交自己的代码,可以用下面的别名,用一段通用的提交消息将所有 git 未暂存的文件添加到暂存区中。
[alias]
save = !git add -A && git commit -m 'chore: commit save point
执行:
$ git save
[feat/add-popup 98cba110acb] chore: commit save point
1 file changed, 1 insertion(+)
回滚更改
如果在提交更改后需要进行回滚,那么下面的别名会把所有提交更改回滚到本地未暂存区:
[alias]
undo = reset HEAD~1 --mixed
一旦调用了这个别名,就可以用 git undo
来重置该分支上先前的提交,并检查所有先前提交的更改是否为未提交,这样可以继续进行操作。
这样用:
$ git undo
Unstaged changes after reset:
M app.js
清除所有更改
当需要快速清理你不想在当前阶段提交到存储库的所有本地更改时,可以用以下别名:
[alias]
res = !git reset --hard
它会重置所有暂存的更改(用 git add
命令添加的更改):
$ git res
HEAD is now at 6e7879bc81a chore: commit save point
将更改推送到上游
当代码完成之后,应该将其提交到 git 库的上游。要完成这个工作通常会用一段非常冗长的命令:git push origin
或 git push origin main
。
但是,如果你要使用与要更改的分支名称相同的分支名称,那么我们可以将远程分支名称命名为 HEAD
。使用像 git done
这样简单的快捷方式,将你的提交从本地 git 推送到源或上游远程站点:
[alias]
done = !git push origin HEAD
当分支名称很长时,用这个别名和 HEAD
的快捷方式很有用。这是使用方式:
$ git done
Enumerating objects: 42, done.
Counting objects: 100% (42/52), done.
Delta compression using up to 8 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 1.63 KiB | 7.63 MiB/s, done.
Total 42 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 8 local objects.
To github.com:royeeshemesh/git-workflow.git
bc535183..1e42d90 HEAD -> main
Git log
最后是最有用的 git 命令之一:git log
。通过 git 别名来构造日志输出格式的方法有很多,下面是我的格式:
[alias]
lg = !git log --pretty=format:"%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) [%an]" --abbrev-commit -30
这个别名能使 git log 的输出更具可读性。试试看:
$ git log
总结
下面是要配置在你 ~/.gitconfig
文件中的完整内容:
[alias]
s = status
co = checkout
cob = checkout -b
del = branch -D
br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
save = !git add -A && git commit -m 'chore: savepoint'
undo = reset HEAD~1 --mixed
res = !git reset --hard
done = !git push origin HEAD
lg = !git log --pretty=format:"%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) [%an]" --abbrev-commit -30
本文首发微信公众号:前端先锋
欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章
欢迎继续阅读本专栏其它高赞文章:
- 深入理解Shadow DOM v1
- 一步步教你用 WebVR 实现虚拟现实游戏
- 13个帮你提高开发效率的现代CSS框架
- 快速上手BootstrapVue
- JavaScript引擎是如何工作的?从调用栈到Promise你需要知道的一切
- WebSocket实战:在 Node 和 React 之间进行实时通信
- 关于 Git 的 20 个面试题
- 深入解析 Node.js 的 console.log
- Node.js 究竟是什么?
- 30分钟用Node.js构建一个API服务器
- Javascript的对象拷贝
- 程序员30岁前月薪达不到30K,该何去何从
- 14个最好的 JavaScript 数据可视化库
- 8 个给前端的* VS Code 扩展插件
- Node.js 多线程完全指南
- 把HTML转成PDF的4个方案及实现
- 更多文章...
转: