乐趣区

关于git:这-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 origingit 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 个计划及实现

  • 更多文章 …
退出移动版