【问题标题】:Is there an easy way to change to previously active branch?有没有一种简单的方法可以更改为以前活动的分支?
【发布时间】:2009-10-21 10:24:21
【问题描述】:

我在 Windows 上使用 git(实际上是 msysgit)1.6.4。大多数时候我都在一些功能分支上工作。时不时地,我想跳回 master 来挑选我在我的特性分支中所做的一个特定提交——通常是因为它是一个有用的错误修复,即使没有这个特性也是有意义的。我的工作流程是这样的 - 如果这太复杂了,请告诉我:-) :

git checkout -b mycoolfeaturebranch // 破解,实现一个功能和一个错误修复(当我在它的时候) git add file_with_bugfix.cpp git commit -m "Fixed bug 12345 // 提交错误修复 git checkout master // 跳转到 master git cherry-pick // 将 bugfix 带入 master

此时,我通常想跳回我的功能分支继续开发该功能。不幸的是,我的分支名称往往会变得有点长(例如,'mycoolfeaturebranch'),而且我没有在 Windows 上完成 git 分支名称选项卡。

在 Unix shell 上可能有类似 cd - 的东西(跳到上一个目录,对于在两个目录之间切换很有用)? git checkout - 会很棒。 :-)

【问题讨论】:

    标签: git branch msysgit


    【解决方案1】:

    来自 $GIT/Documentation/RelNotes-1.6.2.txt:

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

    你试过了吗?

    【讨论】:

    • 啊!我尝试了一些较旧的 git 版本,但自从升级到 git 1.6.4 后没有重试。哦!感谢您指出这一点!
    【解决方案2】:

    试试:

     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>}

    后缀 @ 的 ref 后面带有一个用大括号对(例如 {1}{15})括起来的序号规范,以指定该 ref 的第 n 个先前值。
    例如,master@{1} 是 master 的直接优先值,而 master@{5} 是 master 的第 5 个优先值。
    此后缀只能紧跟在 ref 名称之后使用,并且 ref 必须具有现有日志 ($GIT_DIR/logs/)。

    您可以使用 @ 结构和一个空的 ref 部分来获取当前分支的 reflog。
    例如,如果您在分支blabla 上,那么@{1} 的含义与blabla@{1} 相同。

    )

    【讨论】:

    • 太棒了!效果很好 - 不幸的是,@{-1} 打字有点烦人。现在,我创建了一个名为“git cc”的别名,它执行“git checkout @{-1}”。或者有没有办法让 'git checkout -' 成为 'git checkout @{-1}' 的别名?
    • git checkout - 用作git checkout @{-1}@{-1} 是更通用的 @{-n} 的特例,即第 n 个最后签出的分支。
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多