代码之家  ›  专栏  ›  技术社区  ›  Frerich Raabe

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

  •  4
  • Frerich Raabe  · 技术社区  · 16 年前

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

    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分支名称选项卡完成。

    cd - 在Unix shell上(跳到上一个目录,用于在两个目录之间切换)?A. git checkout - 那太好了。 :-)

    2 回复  |  直到 16 年前
        1
  •  4
  •   Stefan Näwe    16 年前

    来自$GIT/文档/RelNotes-1.6.2.txt:

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

    你试过了吗?

        2
  •  4
  •   Community Mohan Dere    9 年前

    尝试:

     git checkout @{-1}
    

    git rev-parse :

    特殊构造 @{-<n>} 指在当前分支机构之前签出的第个分支机构。


    正如前文所述 Stefan Näwe his answer :

    " git checkout - “是”的简写 git checkout @{-1} ".

    尽管语法 @{-1} 正如Junio C.Hamano评论的那样,它一直在1.6.2左右,只有在1.6.2之后才完全有效 back in February 2009 (强调我的):

    @{-1}语法早在你开始变得过度活跃之前就添加了 这一轮,但它将在1.6.2和 已被宣传为“可用” 任何可以使用分支名称的地方”,但实际上不是 .

    我一直在整理各种地方,以使现实与说法相匹配。
    我正在制作” git merge @{-1} “现在工作。


    (注:与 @{<n>}

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

    您可以使用 @ 使用空的ref部分构造以获取当前分支的reflog。
    例如,如果你在分行 blabla 那么 @{1} 意思与 blabla@{1} .

    )