我有点想要cd -git 的等效项。如果我在分支机构master并且结帐foo,我希望能输入类似git checkout -回去的文字master,并能够再次输入它返回到foo。
像这样的东西存在吗?实施起来会很难吗?
gc-是git checkout -
                我有点想要cd -git 的等效项。如果我在分支机构master并且结帐foo,我希望能输入类似git checkout -回去的文字master,并能够再次输入它返回到foo。
像这样的东西存在吗?实施起来会很难吗?
gc-是git checkout -
                Answers:
@{-1}是一种引用您所在的最后一个分支的方法。
不仅在期望使用对象名称的地方,而且在期望使用分支名称的任何地方都可以接受,并且就像您键入分支名称一样。
例如git branch --track mybranch @{-1},git merge @{-1}和
git rev-parse --symbolic-full-name @{-1}将按预期工作。
和
git checkout -是的简写git checkout @{-1}。
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
                    @{u},这是当前分支的上游分支。这对于例如git log @{u}..列出哪些尚未提交的上游提交非常有用。相反git log ..@{u},这只是尚未推送的本地提交。
                    如今,最简单的方法是:
git checkout -
...是以下内容的别名:
git checkout @{-1}
如果您想了解更多信息,我在这里写了整篇文章:Checkout The Previous Branch In Git。
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
                    git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] } 。在bash中,您必须编写等效的内容(获取reflog并将其过滤为包含“:checkout:”字符串的行,然后提取分支名称)。这实际上就是git所做的
                    只需在前面的答案中添加更多细节,以了解其git checkout @{-N}工作机理。它通过reflog来检查结帐历史,因此,如果您想自己实现类似的功能,则应该能够解析git reflog寻找checkout:行的输出。您可以检查git源中的实现sha1_name.c,特别是功能interpret_nth_prior_checkout。
以下是Git文档各部分的指针,这些文档描述了其他答案给出的git checkout -和git checkout @{-1}解决方案:
当为任何命令指定Git版本时@{-<n>},例如@{-1}表示“第n个分支/提交在当前命令之前签出。” 该文档git checkout <branch>重申:“您可以使用@{-N}语法来引用使用git checkout操作检出的第N个最后一个分支/提交。”
对于的<branch>论点git checkout,“您还可以指定与' -'同义的' @{-1}'。”