所以我有两个分支master和formtest我有一个[别名]“git switch”,可以让我隐藏任何正在进行的工作,并 checkout 另一个分支。“git开关”
switch = !git stash && git checkout
现在我想创建一个[别名]“git切换”
switchback = ???
我想让它说切换到此分支“formtest”然后运行stash apply在我第一次运行“git switch”之前,取消最后一次WIP并将其返回
ztmd8pv51#
切换回您以前工作过的分支
git checkout - && git stash apply
-的工作方式与cd -中的-类似,例如切换回您使用的最后一个分支(位置)。
-
cd -
但是请注意,如果您碰巧在checkout之间有另一个分支,那么这将是错误的分支。
checkout
wnavrhmk2#
git checkout $(git log --format=%B -n 1 stash@{0} | grep -oP '(?<=^WIP on )[^(:][^:]*' || git rev-parse stash@{0}^)
这将解析最新的stash提交消息,该消息包含在其上创建的分支名称。如果没有分支(分离的HEAD),它将 checkout stash的父提交。
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切换到另一个分支。
git switchback
git switchback branchname
3条答案
按热度按时间ztmd8pv51#
切换回您以前工作过的分支
-
的工作方式与cd -
中的-
类似,例如切换回您使用的最后一个分支(位置)。但是请注意,如果您碰巧在
checkout
之间有另一个分支,那么这将是错误的分支。wnavrhmk2#
这将解析最新的stash提交消息,该消息包含在其上创建的分支名称。如果没有分支(分离的HEAD),它将 checkout stash的父提交。
ybzsozfc3#
您可以定义一个shell函数并立即调用它:
然后呼叫:
您可以很容易地将别名设置为
-
(上一个分支):然后
git switchback
将转到上一个分支并应用存储,但您仍然可以运行git switchback branchname
切换到另一个分支。