`git checkout -` 如何在底层工作
How `git checkout -` works on low level
如何使用 Git 管道命令或状态文件获取以前的 branch/commit?
编辑:问题是 - 我如何在不执行实际结帐的情况下获取此信息(前一个分支或提交)?这对于在 Git 之上工作的工具是必需的,而不是对于常规 Git 场景。
通过查看 code:
if (!strcmp(arg, "-"))
arg = "@{-1}";
中记录了访问以前签出的分支的方法
现在解析@{-n}
后面的分支名称,解决方法是git check-ref-format --branch
:
With the --branch
option, it expands the “previous branch syntax” @{-n}
. For example, @{-1}
is a way to refer the last branch you were on. This option should be used by porcelains to accept this syntax anywhere a branch name is expected, so they can act as if you typed the branch name.
$ git check-ref-format --branch @{-1}
my_branch
$ git check-ref-format --branch @{-2}
master
还有git rev-parse --symbolic-full-name
的解决方法:
$ git rev-parse --symbolic-full-name @{-1}
refs/heads/my_branch
$ git rev-parse --symbolic-full-name @{-2}
refs/heads/master
如何使用 Git 管道命令或状态文件获取以前的 branch/commit?
编辑:问题是 - 我如何在不执行实际结帐的情况下获取此信息(前一个分支或提交)?这对于在 Git 之上工作的工具是必需的,而不是对于常规 Git 场景。
通过查看 code:
if (!strcmp(arg, "-"))
arg = "@{-1}";
中记录了访问以前签出的分支的方法
现在解析@{-n}
后面的分支名称,解决方法是git check-ref-format --branch
:
With the
--branch
option, it expands the “previous branch syntax”@{-n}
. For example,@{-1}
is a way to refer the last branch you were on. This option should be used by porcelains to accept this syntax anywhere a branch name is expected, so they can act as if you typed the branch name.
$ git check-ref-format --branch @{-1}
my_branch
$ git check-ref-format --branch @{-2}
master
还有git rev-parse --symbolic-full-name
的解决方法:
$ git rev-parse --symbolic-full-name @{-1}
refs/heads/my_branch
$ git rev-parse --symbolic-full-name @{-2}
refs/heads/master