我有一堆名字不正确的东西。我想修改一下名字,让它更准确。
我如何重命名收藏?
我有一堆名字不正确的东西。我想修改一下名字,让它更准确。
我如何重命名收藏?
当前回答
最简单的方法:弹出你的stash与git stash流行,然后保存它再次与git stash保存你的名字
其他回答
我认为这是不可能的。有一个关于存储重命名的提议,但是还没有实现。
我的大意是: 实现一个新的git reflog update命令,更新与特定reflog条目关联的消息。为此,一个新的update_reflog_ent()函数(在reflog.c中)会将与特定reflog条目相关的消息更改为update。update_reflogg()函数将使用for_each_reflog_ent()和update_reflog_ent来实际执行更改。 git stash rename命令只需要使用适当的ref和new消息调用git reflog update。
当然,你也可以弹出隐藏,并做一个git隐藏保存[消息]
除非你手动操作或对Git做出改进,否则你可以使用别名:
git config --global alias.stash-rename '!_() { rev=$(git rev-parse $1) && git stash drop $1 || exit 1 ; git diff-index --quiet HEAD; s=$?; [ $s != 0 ] && git stash save "tmp stash from stash-rename"; git stash apply $rev && shift && git stash save "$@" && [ $s != 0 ] && git stash pop stash@{1}; }; _'
使用方法:"git stash-rename <stash>[保存选项][<消息>]"
使用[保存选项]任何git保存选项:[-p|——patch] [-k|——[no-]keep-index] [-q|——quiet] [-u|——include-untracked] [-a|——all]
例子:
$ git stash list
stash@{0}: On master: Pep8 format
stash@{1}: On master: co other than master with local changes
stash@{2}: On master: tests with deployAtEnd
# Let's say I want to rename the stash@{2} adding an issue reference:
$ git stash-rename stash@{2} NXP-13971-deployAtEnd
$ git stash list
stash@{0}: On master: NXP-13971-deployAtEnd
stash@{1}: On master: Pep8 format
stash@{2}: On master: co other than master with local changes
这将工作,即使你有本地的非阶段性变化:)
编辑2016/02/22
简化脚本,感谢qzb, https://stackoverflow.com/a/35549615/515973
git config --global alias.stash-rename '!_() { rev=$(git rev-parse $1) && git stash drop $1 || exit 1 ; git stash store -m "$2" $rev; }; _'
用法:"git stash-rename <stash>[<消息>]"
这里有很多复杂的答案。我是这么说的:
首先让我们找到你的收藏索引:
git stash list
例如,现在将其应用于git stash apply {N}
git stash apply 2
现在可以用一条新消息保存更改
git stash push -m 'My descriptive stash message'
如果你想清理原来的存储,记得将索引增加1,因为新的存储会增加所有现有的索引(所以这里我们要N + 1)
git stash drop 3
多年后,我回答了自己的问题:这是刚刚宣布的,所以我想我应该在这里加上它。
许多GUI git客户端(例如,Fork 1.58和更新版本)现在支持直接重命名存储。
让我们假设你的收藏清单是这样的:
$ git stash list
stash@{0}: WIP on master: Add some very important feature
stash@{1}: WIP on master: Fix some silly bug
首先,你必须删除你想重命名的stash条目:
$ git stash drop stash@{1}
Dropped stash@{1} (af8fdeee49a03d1b4609f294635e7f0d622e03db)
现在只需在删除后使用sha的commit返回的新消息再次添加它:
$ git stash store -m "Very descriptive message" af8fdeee49a03d1b4609f294635e7f0d622e03db
就是这样:
$ git stash list
stash@{0}: Very descriptive message
stash@{1}: WIP on master: Add some very important feature
这个解决方案需要git 1.8.4或更高版本,是的,它也适用于脏工作目录。