有没有办法让git checkout以前的分支?

我有点想要相当于cd -对于混帐。 如果我在分支master ,我结帐foo ,我希望能够键入类似git checkout -回到master ,并能够再次键入它返回到foo

有这样的事情吗? 难以实施吗?

从1.6.2的发行说明

@{-1}是一种引用你最后一个分支的方法。 这是
不仅可以接受对象名称的预期位置,而且还可以接受分支名称的任何位置,并且可以像input分支名称一样进行操作。
例如git branch --track mybranch @{-1}git merge @{-1}
git rev-parse --symbolic-full-name @{-1}将按预期工作。

git checkout -git checkout @{-1}的简写。

现在做这个最简单的方法是:

 git checkout - 

…这是别名:

 git checkout @{-1} 

git checkout减去

如果你想了解更多这方面的内容,我在这里写了一篇关于它的完整文章: 在Git中签出前一个分支 。

正如@Karl指出的,从git checkout手册:

作为特殊情况,第N个最后分支的“@ { – N}”语法会检出分支(而不是分离)。 您也可以指定 – 与“@ { – 1}”同义。

所以在这种情况下, git checkout @{-1}git checkout @{-1}都可以工作

最近我相信是使用git reflog和parsingmoving from branch1 to branch2git checkout branch1的最新moving from branch1 to branch2

只要在前面的答案中join一些更多的细节来理解git checkout @{-N}工作的机制。 它引导reflog检查结账历史,所以如果你想自己实现类似的东西,你应该能够parsinggit reflog的输出来寻找checkout: lines。 你可以在git源代码sha1_name.c检查实现,特别是函数interpret_nth_prior_checkout

我以同样的想法登上了这个问题来检查我以前的分支。 我在Mac使用ohmyz 。 下面的命令帮助了我。

 $ gco -