git - 显示 git 分支名称或提交 ID

标签 git shell command-prompt

在显示当前分支名称时,我试图重现我的 shell 提示符的行为。 我在这里使用鱼,但大多数 shell 都有这个功能。 fish prompt

如果我使用命令

git rev-parse --abbrev-ref --verify HEAD

它返回我

master

好!

现在,如果我 check out 旧提交,我的提示会显示 fish prompt

如果我再次运行上面的命令,它会返回

HEAD

这不是我想要的。我想要 3171f5a 就像提示一样。所以我有一个新命令。

git rev-parse --short --verify HEAD

3171f5a

不错!但如果我回来掌握它,它会给我

617ca76

你知道是否有一个命令可以立即给我输出,而无需 if 语句检查返回值是否为 HEAD。 (缩短或不缩短散列都可以)

非常感谢

最佳答案

在 shell 中执行此操作的单行方法是使用两个单独的 Git 命令:

git symbolic-ref --short -q HEAD || git rev-parse --short HEAD

在分离的 HEAD 情况下,git symbolic-ref 命令失败(而 -q 阻止它向 stderr 提示)和第二个 git rev -parse 命令继续打印缩短的哈希 ID。

请注意,当您在未出生的分支上时,git symbolic-ref 命令会成功,您将获得未出生分支的(缩写)名称。

关于git - 显示 git 分支名称或提交 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47592077/

相关文章:

git - 只为一个子目录创建一个分支

linux - 将系统上所有 git 存储库的远程从 http 更改为 ssh

bash - 有没有办法中断 shell 命令但继续包含它的管道?

python - 使用 Python 创建旧式控制台表单

git - 将 VSTS Git Repo merge 到另一个 VSTS Git Repo

git - 无法 push GIT,但 rebase 为最新

linux - 在 shell 中解析非结构化数据

apache - 使用 Apache 显示长时间运行的 shell 进程

java - 我是否跳过了JRE和Launch4j中的必要步骤,导致exe文件失败?

c++ - 按住滚动条获取命令提示符以在 Windows 中暂停