我想要等价于cd -的git。如果我在master分支,我签出foo,我希望能够键入类似git checkout的东西-返回到master,并能够再次键入它返回到foo。

这样的东西存在吗?实施起来会很难吗?


当前回答

我带着同样的想法来到了这个问题,去结账我的前一个分支。我在Mac中使用ohmyz。下面的命令帮助了我。

$ gco -
$ git checkout -

其他回答

我带着同样的想法来到了这个问题,去结账我的前一个分支。我在Mac中使用ohmyz。下面的命令帮助了我。

$ gco -
$ git checkout -

正如@Karl在git签出手册中指出的那样:

作为一种特殊情况,检查第n个分支的“@{-N}”语法 出分支(而不是分离)。您还可以指定-哪个是 与“@{-1}”同义。

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

我认为最接近的是使用git reflog和解析最新的移动从branch1到branch2和git签出branch1

最流行的解决方案是:

git checkout @{-N}

其中N步计数的分支移动回签历史。

现在最简单的方法是:

git checkout -

…这是一个别名:

git checkout @{-1}

如果你想了解更多,我在这里写了一篇完整的文章:Checkout The Previous Branch In Git。

Git 2.23版本引入了Git switch命令,你可以使用它来做这些(以及更多)。引用官方文件:

切换到指定分支。工作树和索引被更新以匹配分支。所有新的提交都将被添加到这个分支的顶端。

在你的特定情况下,你可以发布git开关-回到你之前在的分支。您可以再次执行相同的命令以返回到第一个分支。

这个命令不那么令人困惑,而且对初学者很友好,因为它解决了在使用git签出时出现的常见困惑。