以下内容适用于 Linux、MacOSX 和 Windows(使用 msysgit)。
使用 git la 在 .gitconfig 中显示别名
我听说过“bash 脚本”吗? ;)
关于上面评论中的“不需要”部分,我基本上为我的别名创建了一个手册页,例如概述。为什么要大惊小怪?这不是完全矫枉过正吗?
继续阅读...
我在我的 .gitconfig 中设置了这样的命令,分隔为 TAB=TAB:
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
并简单地定义另一个别名来 grep 已定义别名的 TAB= 部分。 (所有其他选项在其定义中的“=”前后都没有制表符,只有空格。)
未附加到别名的注释也有 TAB=== == 附加,所以它们在 grepping 之后显示。
为了更好地查看,我将 grep 输出通过管道传输到 less 中,如下所示:
基础版:(黑/白)
#.gitconfig
[alias]
# use 'git h <command>' for help, use 'git la' to list aliases =====
h = help #... <git-command-in-question>
la = "!grep '\t=' ~/.gitconfig | less"
“\t=”部分匹配 TAB=。
为了更好地了解我拥有的别名,并且由于我使用 bash 控制台,我使用终端颜色为输出着色:
高级版:(彩色)
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
与上面基本相同,只是添加了 sed 用法来获取颜色代码到输出中。
less 的-R 标志是获取less 中显示的颜色所必需的。
(我最近发现,在移动设备上无法正确显示窗口下方带有滚动条的长命令:它们的文本被截断,滚动条完全丢失。最后一个代码可能就是这种情况 sn-p在这里,在旅途中查看代码 sn-ps 时请记住这一点。)
为什么要让这种魔法发挥作用?
我有大约半英里的别名,根据我的需要量身定制。
还有一些随着时间的推移而变化,所以手头有一个最新列表的最好办法是解析 .gitconfig。
我的 .gitconfig 别名的 ****short**** 摘录:
# choose =====
a = add #...
aa = add .
ai = add -i
# unchoose =====
rm = rm -r #... unversion and delete
rmc = rm -r --cached #... unversion, but leave in working copy
# do =====
c = commit -m #...
fc = commit -am "fastcommit"
ca = commit -am #...
mc = commit # think 'message-commit'
mca = commit -a
cam = commit --amend -C HEAD # update last commit
# undo =====
r = reset --hard HEAD
rv = revert HEAD
在我的 linux 或 mac 工作站中,.bashrc 中还存在其他别名,有点像:
#.bashrc
alias g="git"
alias gh="git h"
alias gla="git la"
function gc { git c "$*" } # this is handy, just type 'gc this is my commitmessage' at prompt
这样就不需要输入git help submodule,不需要git h submodule,只需要gh submodule就可以得到帮助。只是一些字符,但你多久输入一次?
我使用以下所有方法,当然只使用快捷方式...
- 添加
- 提交
- 提交--修改
- 重置 --hard HEAD
- 推
- 获取
- 变基
- 结帐
- 分支
- show-branch(有很多变体)
- 短日志
- 重新登录
- 差异(变体)
- 日志(有很多变体)
- 状态
- 显示
- 注释
- ...
这只是我的想法。
我经常不得不在没有 gui 的情况下使用 git,因为许多 git 命令在任何图形前端都没有正确实现。但每次我使用它们时,它的方式几乎都是一样的。
关于上一段中提到的“未实施”部分:
我还没有在 GUI 中找到与此相比的东西:
sba = show-branch --color=always -a --more=10 --no-name - 显示所有本地和远程分支以及它们在其中的提交
ccm = "!git reset --soft HEAD~ && git commit" - 更改最后提交消息
从更简单的角度来看:
您多久输入一次git add . 或git commit -am "..."?连其余的都不算...
在 Windows 中让事情像 git aa 或 git ca "..." 一样工作,
或者在 linux 和 mac 上使用 bash 别名 gaa/g aa 或 gca "..."/g ca "..."...
根据我的需要,定制这样的 git 命令似乎是一件明智的事情......
...而且为了更容易使用,我只是帮助自己使用较少使用的命令,所以我不必每次都查阅手册页。命令是预定义的,查找它们尽可能简单。
我的意思是,我们毕竟是程序员?让事情像我们需要的那样工作是我们的工作。
这是一个额外的屏幕截图,适用于 Windows:
奖励:如果您使用的是 linux 或 mac,彩色手册页可以帮助您很多:
colorized man pages