Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 是否有一种简单的方法可以更改为以前的活动分支?_Git_Branch_Msysgit - Fatal编程技术网

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

Git 是否有一种简单的方法可以更改为以前的活动分支?,git,branch,msysgit,Git,Branch,Msysgit,我在Windows上使用git(实际上是msysgit)1.6.4。大部分时间我都在一些功能分支中工作。时不时地,我想跳回到master,挑选我在feature分支中做过的一个特定的提交——通常是因为这是一个有用的错误修复,即使没有该功能也有意义。我的工作流程是这样的-如果这是不必要的复杂,请告诉我:-): git签出-b MyColFeatureBranch //黑客离开,实现一个功能和一个错误修复(当我在做的时候) git使用_bugfix.cpp添加文件_ git commit-m“修复了

我在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上是否有类似于
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}