如何别名git checkout&&git stash apply

ljo96ir5  于 2022-10-23  发布在  Git
关注(0)|答案(3)|浏览(175)

所以我有两个分支master和formtest
我有一个[别名]“git switch”,可以让我隐藏任何正在进行的工作,并 checkout 另一个分支。
“git开关”

switch = !git stash && git checkout

现在我想创建一个[别名]
“git切换”

switchback = ???

我想让它说
切换到此分支“formtest”
然后运行stash apply
在我第一次运行“git switch”之前,取消最后一次WIP并将其返回

ztmd8pv5

ztmd8pv51#

切换回您以前工作过的分支

git checkout - && git stash apply

-的工作方式与cd -中的-类似,例如切换回您使用的最后一个分支(位置)。

但是请注意,如果您碰巧在checkout之间有另一个分支,那么这将是错误的分支。

wnavrhmk

wnavrhmk2#

git checkout $(git log --format=%B -n 1 stash@{0} | grep -oP '(?<=^WIP on )[^(:][^:]*' || git rev-parse stash@{0}^)

这将解析最新的stash提交消息,该消息包含在其上创建的分支名称。如果没有分支(分离的HEAD),它将 checkout stash的父提交。

ybzsozfc

ybzsozfc3#

您可以定义一个shell函数并立即调用它:

git config --global alias.switchback 'f() { git checkout "$1" && git stash apply; }; f'

然后呼叫:

git switchback master # switch to master and apply stash
git switchback - # switch to previous branch and apply stash

您可以很容易地将别名设置为-(上一个分支):

git config --global alias.switchback 'f() { git checkout "${1:--}" && git stash apply; }; f'

然后git switchback将转到上一个分支并应用存储,但您仍然可以运行git switchback branchname切换到另一个分支。

相关问题