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

kzmpq1sx  于 2022-11-20  发布在  Git
关注(0)|答案(9)|浏览(172)

如果我在分支master中 checkout 了foo,我希望能够输入类似git checkout -的内容返回到master,并且能够再次输入返回到foo
是否存在这样的东西?是否难以实现?

t5fffqht

t5fffqht1#

release notes for 1.6.2
@{-1}是一种引用您所在的最后一个分支的方式。
不仅在需要对象名的地方接受,而且在需要分支名的地方也接受,就像您键入了分支名一样。
例如git branch --track mybranch @{-1}git merge @{-1}
git rev-parse --symbolic-full-name @{-1}将按预期工作。

git checkout -git checkout @{-1}的简写。
若要查看先前 checkout 的列表:
i=0; while [ $? -eq 0 ]; do i=$((i+1)); echo -n "$i. "; git rev-parse --symbolic-full-name @{-$i} 2> /dev/null; done

  • 这个Bash一行程序脚本并不完美,但它应该适用于大多数情况。请注意,有时数字可能会跳过。*
    ***提示:*您可以将其作为function添加到.bashrc.
vlf7wbxs

vlf7wbxs2#

现在最简单的方法是:

git checkout -

...它是以下项的别名:

git checkout @{-1}

如果你想知道更多关于这一点,我写了一篇完整的文章在这里:Checkout The Previous Branch In Git

yvgpqqbh

yvgpqqbh3#

Git版本2.23引入了git switch命令,你可以用它来完成这个任务(以及更多)。
切换到指定的分支。工作树和索引会更新以匹配该分支。所有新提交都将被添加到该分支的顶端。
在您的特定情况下,您可以执行git switch -返回到您之前所在的分支。您可以再次执行相同的命令返回到第一个分支。
此命令不那么容易混淆,并且对初学者很友好,因为它解决了使用git checkout时出现的常见confusion问题。

lnvxswe2

lnvxswe24#

正如@Karl所指出的和来自git checkout手册的:
作为一种特殊情况,最后第N个分支的“@{-N}”语法 checkout 该分支(而不是分离)。您还可以指定-,它与“@{-1}"同义。
因此,git checkout -git checkout @{-1}都适用于这种情况
我认为最接近的是使用git reflog并解析最新的moving from branch1 to branch2git checkout branch1

3mpgtkmj

3mpgtkmj5#

我在这个问题上的想法和我以前的分支一样。我在Mac中使用ohmyz。下面的命令帮助了我。

$ gco -
$ git checkout -
kjthegm6

kjthegm66#

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

vbopmzt1

vbopmzt17#

以下是Git文档中描述git checkout -git checkout @{-1}解决方案的部分内容:

  • 为任何命令指定Git修订版时,@{-<n>},例如**@{-1}**表示“在当前分支/提交之前 checkout 的第 n 个分支/提交”。git checkout <branch>的文档重申:“您可以使用@{-N}语法引用使用git checkout操作 checkout 的第N个最后分支/提交。”
  • 对于git checkout<branch>参数,“也可以指定与”@{-1}“同义的”-“。”
3htmauhk

3htmauhk8#

最流行的解决方案是:

git checkout @{-N}

其中,N -在检出历史上向后移动的分支的步数。

dxxyhpgq

dxxyhpgq9#

在我的情况下,我已经从主页面切换到gh-pages,这导致我所有的组件消失,并被一个名为“static”和其他文件所取代。

git checkout -m master已帮助

相关问题