跑步时git commit --fixup=beefca7e
或者当在提交消息中引用先前的提交时,我必须在笨拙的工作流程中使用鼠标。我使用bash:
- 打开一个新的终端选项卡/窗口/窗格。
-
git log --oneline --graph
.¹
- 扫描列表以查找相关的提交 sha。
- 抓住鼠标,选择sha,将其复制到剪贴板。²
- 移回我正在工作的窗格并将其粘贴到那里。
这有效。但我怀疑这可以更容易地完成。
是否有命令行工具、脚本或 git-addons 允许我快速过滤提交并复制所选条目的 sha?
我的工作流程是否错误(或幼稚),我是否在某个地方错过了重要的 git 功能?
也能在 vim 中使用它,因为这是我编辑提交消息的编辑器。复制短煞而不是完整煞的奖励。
- ¹ 我对此命名有一个更复杂的别名
git lg
.
- ² xclip/gnome/剪贴板管理器配置为选择时自动复制。否则 ctrl-c/cmd-c 左右。粘贴是鼠标中键。节省了一些命令,但仍然不理想。我宁愿根本不使用鼠标并省略大多数步骤。
如果没有合适的工具,则创建它)想出这个:
#!/bin/bash
first_dialog() {
dialog --output-fd 1 \
--ok-label "Copy SHA" \
--cancel-label "Exit" \
--menu "Select SHA to copy:" 0 0 0 "${list[@]}"
}
#-------------{ Create list for dialog }----------------
while read -r sha desc; do
list+=( "$sha" "$desc" )
done < <(git log --oneline)
first_dialog
Usage:
echo "test $(~/test) stst"
test 8cabb04 stst
或者像这样:
sha="$(~/ower/test)"
$ echo $sha
20799ef
转化为函数:
gsha() {
list=()
while read -r sha desc; do
list+=( "$sha" "$desc" )
done < <(git log --oneline -n${1:-20})
dialog --output-fd 1 \
--ok-label "Copy SHA" \
--cancel-label "Exit" \
--menu "Select SHA to copy:" 0 0 0 "${list[@]}"
}
sha="$(gsha)"
$ echo $sha
20799ef
我在我的sshto https://github.com/vaniacer/sshto项目。将此添加到我的github
also gsha https://github.com/vaniacer/gsha
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)