我习惯于将我的变化隐藏在git中并再次应用它们git stash apply
.这样做的好处是可以防止我意外丢失我所造成的藏匿,但这也意味着我的藏匿列表增长得相当快.
当我完成分支时,我会通过我的存储列表返回并手动删除与分支相关的所有存储.有没有办法在一个命令中执行此操作?
例如,我当前的存储列表如下所示:
kevin@localhost:~/my/dev/work$ git stash list
stash@{0}: WIP on master: 346f844 Commit comment
stash@{1}: WIP on second_issues: a2f63e5 Commit comment
stash@{2}: WIP on second_issues: c1c96a9 Commit comment
stash@{3}: WIP on second_issues: d3c7949 Commit comment
stash@{4}: WIP on second_issues: d3c7949 Commit comment
stash@{5}: WIP on second_issues: d3c7949 Commit comment
stash@{6}: WIP on second_issues: 9964898 Commit comment
Run Code Online (Sandbox Code Playgroud)
是否有一个命令会丢弃所有的藏匿处second_issues
?
那这个呢?这是一种快速而肮脏的方式,可以删除在给定分支上创建的存储。
它只是列出所有存储,使用 grep 搜索在分支上创建的存储,获取其存储名称,最后git stash drop
通过 xargs 传递这些名称。
git stash list | grep -E 'stash@{[0-9]+}.+ YOUR_BRANCH_NAME' | cut -d ':' -f 1 | xargs git stash drop
Run Code Online (Sandbox Code Playgroud)
编辑
深入研究手册页,它说git stash list
还接受git log
格式选项。
因此,我们告诉它打印仅匹配的行YOUR_BRANCHNAME
,并在这些行中仅打印其“重新标记身份名称”(%gd: shortened reflag selector, e.g., stash@{1}
来自手册页)。
然后,我们将输出传递给以xargs
删除存储。
git stash list --grep='YOUR_BRANCHNAME' --format='%gd' | xargs git stash drop
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
446 次 |
最近记录: |