有没有办法让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中签出前一个分支 。
正如@Karl指出的,从git checkout
手册:
作为特殊情况,第N个最后分支的“@ { – N}”语法会检出分支(而不是分离)。 您也可以指定 – 与“@ { – 1}”同义。
所以在这种情况下, git checkout @{-1}
和git checkout @{-1}
都可以工作
最近我相信是使用 git reflog
和parsingmoving from branch1 to branch2
和git 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 -