如何解决在命令行上获取git-commit-ids
在运行git commit --fixup=beefca7e
或在提交消息中引用上一个提交时,我必须在笨拙的工作流程中使用鼠标。我用bash:
- 打开一个新的终端标签/窗口/窗格。
-
git log --oneline --graph
。¹ - 浏览列表以找到相关的提交目录。
- 抓住鼠标,选择sha,将其复制到剪贴板。²
- 移回我工作的窗格并将其粘贴到那里。
这有效。但是我怀疑这样做可以容易得多。
是否有命令行工具,脚本或git-addons可以让我快速过滤提交内容并复制所选条目的阴影? 我的工作流程是否错误(或幼稚),我是否错过了某个重要的git功能?
也可以在vim中使用它,因为我是编辑提交消息的编辑器。复制短阴影而不是完整阴影的奖励。
- ¹对于这个名为
git lg
的别名,我有一个更为复杂的别名。 - ²xclip / gnome / clipboard manager配置为选择时自动复制。否则ctrl-c / cmd-c左右。粘贴是鼠标中键。保存一些命令,但仍然不是最佳选择。我宁愿完全不使用鼠标,而忽略大多数步骤。
解决方法
如果没有合适的工具,请创建它)。
IS_ID_TST
用法:
FUND_ISIN FUND_QUOTE_CRNY MEMBER_DESCR MEMBER_RATIO ALLOCATIONASSETTYPE
L000123 USD O 0.0769 Other total
L000123 USD C 0.64039 Cash total
L000123 USD C 0.003 member
D123458 USD O 0.64039 Other total
D123458 USD C -0.05743 Cash total
D123458 USD C 2.7654 member
D000123 USD O 0.0653 Other total
D000123 USD C 1.0769 Cash total
D000123 USD null 6.0769 xyz
F000123 USD O -1.0693 Other total
F000123 USD C 2.0769 Cash total
F000123 USD null 0.0769 xyz
M123456 USD O 5.64039 Other total
M123456 USD C 0.84039 Cash total
M123456 USD null 0.04039 xyz
H000526 USD O 0.00345 Other total
H000526 USD C 1.2345 Cash total
H000526 USD null 2.3456 member
或者像这样:
#!/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
已转换为功能:
echo "test $(~/test) stst"
test 8cabb04 stst
我在sshto项目中使用了此技术。将此添加到我的sha="$(~/ower/test)"
$ echo $sha
20799ef
和gsha
gitk
/ gitg
具有适用于linux的“快捷方式”:它们自动选择选定提交的sha1,将其放置在X剪贴板中,您可以使用“中键单击”将其粘贴”,无需其他任何操作。
在Windows上,如果自动选择了sha1,则可以立即ctrl+C
。
在命令行中:您可以使用one of these tools并结合适当的命令将sha1复制到剪贴板,但是根据您的需要,可能会涉及“适当的命令”:
# easy :
git rev-parse HEAD~4 | xclip -selection c
# more involved :
clipsha () {
sha1=$(git log --format="%H" --grep "$1");
git log --oneline -1 $sha1;
echo $sha1 | xclip -selection c;
echo " *** copied sha1 to clipboard"
}
# usage :
clipsha "fixed issue #1234" # will copy the sha1 of first which contains
# the message 'fixed issue #1234'
如果您不想重新发明tig
,请在我建议重复的问题中勾选@VonC's answer:
您可以在tig
中添加快捷方式,以将“选定提交的sha1”复制到剪贴板。
但是说实话,我就像您(或@torek)一样:我通过从终端中选择sha1来复制/粘贴它们。
,尝试the message-search syntax,您不必键入sha,如果它是最新提交,其消息中提到strcat
,则可以说:/strcat
或@^{/strcat}
来获取具体说明从哪里开始在提交消息中寻找strcat
。
要使用rev-parse来获取哈希,如果您经常这样做,请使用rp
别名或其他名称,然后使用:r!git rp :/strcat
将sha放在编辑缓冲区中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。