Git 是否有一种简单的方法可以更改为以前的活动分支?
我在Windows上使用git(实际上是msysgit)1.6.4。大部分时间我都在一些功能分支中工作。时不时地,我想跳回到master,挑选我在feature分支中做过的一个特定的提交——通常是因为这是一个有用的错误修复,即使没有该功能也有意义。我的工作流程是这样的-如果这是不必要的复杂,请告诉我:-): git签出-b MyColFeatureBranch //黑客离开,实现一个功能和一个错误修复(当我在做的时候) git使用_bugfix.cpp添加文件_ git commit-m“修复了错误12345//提交错误修复 git签出主机//跳到主机 git cherry pick//将错误修复带到master中 在这一点上,我通常想跳回我的功能分支继续使用该功能。不幸的是,我的分支名称往往会变得有点长(如“MyColFeatureBranch”),并且我没有在Windows上完成git分支名称选项卡 Unix shell上是否有类似于Git 是否有一种简单的方法可以更改为以前的活动分支?,git,branch,msysgit,Git,Branch,Msysgit,我在Windows上使用git(实际上是msysgit)1.6.4。大部分时间我都在一些功能分支中工作。时不时地,我想跳回到master,挑选我在feature分支中做过的一个特定的提交——通常是因为这是一个有用的错误修复,即使没有该功能也有意义。我的工作流程是这样的-如果这是不必要的复杂,请告诉我:-): git签出-b MyColFeatureBranch //黑客离开,实现一个功能和一个错误修复(当我在做的时候) git使用_bugfix.cpp添加文件_ git commit-m“修复了
cd-
的东西(跳到上一个目录,用于在两个目录之间切换)?git签出-
非常好。:-试试:
git checkout @{-1}
发件人:
特殊构造@{-}
表示在当前分支之前签出的第th分支
如中所述: “
git checkout-
”是“git checkout@{-1}
”的缩写
尽管语法@{-1}
一直在1.6.2左右,但直到1.6.2之后,它才完全有效,正如Junio C.Hamano评论(我的重点):
@{1}语法是在您开始变得过度活跃之前很久添加的
这一轮,但它将出现在1.6.2中,被宣传为“可用”
您可以在任何地方使用分支名称”,但实际上它不是
我一直在整理各种各样的地方,以符合现实情况和要求。我现在正在使“
git merge@{-1}
”工作
(注意:这与
@{}
后跟后缀@的ref,带有括号对中包含的顺序规范(例如,{1}
,{15}
),用于指定该ref的第n个先前值。例如,
master@{1}
是master的前一个值,而master@{5}
是master的第五个前一个值。此后缀只能紧跟在ref名称之后使用,并且ref必须具有现有日志($GIT_DIR/logs/) 您可以使用带有空ref部分的
@
构造来获取当前分支的reflog。例如,如果您在分支
blabla
,则@{1}
的意思与blablabla{1}
相同
)来自$GIT/Documentation/RelNotes-1.6.2.txt:
- “git checkout-”是“git checkout@{-1}”的缩写
你试过了吗?太棒了!效果很好-不幸的是,{1}打字有点烦人。现在,我创建了一个名为'git cc'的别名,它执行'git checkout'{-1}'。或者有没有办法让'git checkout-'成为'git checkout'{-1}的别名?
git checkout-
作为git checkout'{-1}的函数
是更通用的@{-n}
的特例,即第n个最后签出的分支。啊!我用一些较旧的git版本尝试了它,但没有重试,因为我升级到git 1.6.4.D'oh!感谢您指出这一点!
git checkout @{-1}