是否有一种简单的方法可以更改为以前活动的分支?

时间:2009-10-21 10:24:22

标签: git branch msysgit

我在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 -会很棒。 : - )

2 个答案:

答案 0 :(得分:4)

尝试:

 git checkout @{-1}

来自git rev-parse

  

特殊构造@{-<n>}表示在当前构造之前检出的分支。


正如Stefan Näwehis 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:

  • “git checkout - ”是“git checkout @ { - 1}”的简写。

你试过吗?