我想要等价于cd -的git。如果我在master分支,我签出foo,我希望能够键入类似git checkout的东西-返回到master,并能够再次键入它返回到foo。
这样的东西存在吗?实施起来会很难吗?
我想要等价于cd -的git。如果我在master分支,我签出foo,我希望能够键入类似git checkout的东西-返回到master,并能够再次键入它返回到foo。
这样的东西存在吗?实施起来会很难吗?
当前回答
最流行的解决方案是:
git checkout @{-N}
其中N步计数的分支移动回签历史。
其他回答
以下是Git文档中描述Git签出-和其他答案给出的Git签出@{-1}解决方案的部分的指针:
当为任何命令指定Git修订时,@{-<n>},例如@{-1}表示“在当前分支/提交之前检出的第n个分支/提交”。git checkout <branch>的文档重申:“您可以使用@{-N}语法引用使用git checkout操作签出的第n个分支/提交。” 对于git签出的<branch>参数,“您还可以指定' - ',这与' @{-1}'是同义词。”
正如@Karl在git签出手册中指出的那样:
作为一种特殊情况,检查第n个分支的“@{-N}”语法 出分支(而不是分离)。您还可以指定-哪个是 与“@{-1}”同义。
所以git checkout -和git checkout @{-1}在这种情况下都可以工作
我认为最接近的是使用git reflog和解析最新的移动从branch1到branch2和git签出branch1
在我的情况下,我已经从master切换到gh-pages,这导致我所有的组件都消失了,取而代之的是一个文件名“static”和其他。
Git checkout -m master帮助
来自1.6.2版本的发布说明
@{-1}是一种指向您所在的最后一个分支的方法。这是 不仅在需要对象名的地方接受,而且在需要对象名的任何地方接受 分支名称,就像您输入了分支名称一样。 例如,git分支——跟踪mybranch @{-1}, git merge @{-1},和 Git rev-parse——symbolic-full-name @{-1}将正常工作。
and
Git签出-是Git签出@{-1}的简写。
要查看以前的结帐列表:
我= 0;而[$?-eq 0];我= $ ((i + 1));Echo -n "$i。”;Git rev-parse——symbol -full-name @{-$i} 2> /dev/null;完成 这个Bash一行脚本并不完美,但它应该适用于大多数情况。请注意,有时数字可能会跳过。 提示:您可以将它作为函数添加到.bashrc中。
现在最简单的方法是:
git checkout -
…这是一个别名:
git checkout @{-1}
如果你想了解更多,我在这里写了一篇完整的文章:Checkout The Previous Branch In Git。