我在Windows上使用git(事实上,msysgit)1.6.4。大部分时间我都在一些功能分支中工作。偶尔,我想跳回到掌握樱桃选择我在功能分支中做的一个特定提交 - 通常是因为它是一个有用的错误修复,即使没有该功能也是有意义的。我的工作流程是这样的 - 如果这不必要地复杂,请告诉我:-):
git checkout -b mycoolfeaturebranch // hack away, implementing a feature and one bugfix (while I'm at it) git add file_with_bugfix.cpp git commit -m "Fixed bug 12345 // commit the bugfix git checkout master // hop over to master git cherry-pick // bring the bugfix into master
此时,我通常想回到我的功能分支继续处理该功能。不幸的是,我的分支名称往往变得有点长(比如'mycoolfeaturebranch'),我在Windows上没有git branch name tab完成。
在Unix shell上是否有类似cd -
的东西(跳转到上一个目录,对于在两个目录之间切换很有用)? git checkout -
会很棒。 : - )
答案 0 :(得分:4)
尝试:
git checkout @{-1}
特殊构造
@{-<n>}
表示在当前构造之前检出的分支。
正如Stefan Näwe中his answer提到的那样:
“
git checkout -
”是“git checkout @{-1}
”的简写。
尽管语法@{-1}
大约是1.6.2,但只有1.6.2才完全有效,因为Junio C. Hamano评论back in February 2009(强调我的):
在您开始过度活跃之前很久就添加了@ { - 1}语法 这一轮,但它将在1.6.2和被宣传为“可用 你可以在任何地方使用分支名称“,但实际上它不是。
我一直在修理各种地方,以配合现实与声称 我正在制作“
git merge @{-1}
”。
(注意:这与@{<n>}
一个引用后跟后缀@,并在括号对中包含一个序数规范(例如
{1}
,{15}
)以指定该引用的第n个先前值。
例如,master@{1}
是master的直接先前值,而master@{5}
是master的第5个先前值 此后缀只能在引用名称后立即使用,并且引用必须具有现有日志($ GIT_DIR / logs /)。您可以使用带有空参考部分的
@
构造来获取当前分支的reflog。
例如,如果您在分支blabla
上,则@{1}
表示与blabla@{1}
相同。
)
答案 1 :(得分:4)
来自$ GIT / Documentation / RelNotes-1.6.2.txt:
你试过吗?