【问题标题】:How `git checkout -` works on low level`git checkout -` 如何在低级别工作
【发布时间】:2018-04-17 08:24:13
【问题描述】:

如何使用 Git 管道命令或状态文件获取先前的分支/提交?

编辑:问题是 - 我如何在不执行实际结帐的情况下获取此信息(上一个分支或提交)?这是在 Git 上运行的工具所需要的,而不是常规 Git 场景。

【问题讨论】:

  • git reflog?
  • @jthill 谢谢。 reflog 看起来很有希望。你知道获取上一个分支的确切命令吗?
  • “上一个分支”?以前在什么情况下?

标签: git git-plumbing


【解决方案1】:

通过查看code

if (!strcmp(arg, "-"))
    arg = "@{-1}";

访问之前签出的分支的方法记录在revisions doc on @{-n}

现在,解析@{-n}后面的分支名,解决方法是git check-ref-format --branch

使用--branch 选项,它扩展了“先前的分支语法”@{-n}。例如,@{-1} 是一种引用您所在的最后一个分支的方法。瓷器应该使用此选项来在任何需要分支名称的地方接受此语法,因此它们可以像您键入分支名称一样行事。

$ 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 checkout - 几乎相同。问题是 - 如何在不执行实际结帐的情况下获取此信息(上一个分支)?
  • git check-ref-format --branch @{-1} 是我想要的。谢谢你,@zigarn!
猜你喜欢
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
  • 2019-10-21
  • 2012-03-06
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
相关资源
最近更新 更多