gpt4 book ai didi

java - 假设没有提交的更改,如何获取项目的 git 修订版?

转载 作者:行者123 更新时间:2023-12-02 10:19:19 24 4
gpt4 key购买 nike

如果我在本地有未提交的更改,我想要一种能够返回“未知”作为我的 git 修订版本的方法。如果不是,它应该返回正确的 git 修订版。

String getGitRevision() {
String gitRevision = "unknown"
try {
def cmd = "git rev-parse HEAD"
def proc = cmd.execute()
gitRevision = proc.text.trim()
}
catch (IOException ioe) {
println "Fetch revision failed."
}
return gitRevision;
}

我希望当我在本地有未提交的更改时,getGitRevision() 返回未知。

但即使我有未提交的更改,它也会获取正确的修订 ID。我不太确定如何添加该逻辑。

最佳答案

只要存在当前提交,

HEAD 就可以解析为提交,并且几乎总是存在当前提交。 “未提交的更改”与当前是否有提交无关。

要将索引和工作树与当前提交进行比较,请使用git status。为了可靠地做到这一点,在您自己的软件中,请考虑使用 git --no-optional-locks status --porcelain=v2 ,也许也与 -z 一起使用,并阅读其输出,如 the git status documentation 所示。然后,您的代码可以选择将哪些内容视为“未提交的更改”(包括未跟踪的文件,如果您添加 --ignored,则还包括忽略的文件)。

对于这种特殊情况,您只需使用 git describe --always --dirty 并检查 -dirty 后缀。或者——因为这就是 git describe 本身所做的——运行 git diff-index --quiet HEAD 并检查其退出状态:0 表示“不脏”,1 表示“脏”,其他任何东西都意味着“无法判断,出了问题”。使用 git status --porcelain... 的方法是最灵活的,因为它可以让您定义“脏”的含义,但另外两个就简单得多。

关于java - 假设没有提交的更改,如何获取项目的 git 修订版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54450428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com