2

什么是检查 HEAD 下一个(稍后)的修订版(当您处于分离的头部状态时)的最快方法是什么?

这应该是这样的:

git checkout HEAD~-1

但是这个命令不起作用。此外git log,它不显示下一个修订哈希。

我发现的唯一方法是:

git checkout master
git log
[find revision number]
git checkout <revnumber>

但它看起来很慢。有一个命令吗?

4

3 回答 3

3

在 git 中,没有真正有效的方法来获取提交的子项。任何提交都会有一个指向其父级的指针,而不是指向创建提交时不存在的子代的指针。

有可能存在已删除分支引用的子提交(因此,这些提交可以在下一次垃圾收集时被修剪),或者子提交是一个或多个现有分支的历史的一部分。

但是命令中引入--children了git 1.6 。rev-list它可能必须扫描每个本地和远程分支引用的“可访问”(在 git 术语中,意思是“祖先”)的每个提交。

git rev-list将列出所有没有深度限制的后代,格式为commit_id parent_1_commit_id [parent_2_commit_id [...]]. 因此,您必须在第二列中查找头部提交 ID 以获取其后代的提交 ID。

因此:

git rev-list --children HEAD | grep " $(git show --format=format:%H HEAD)"

您可以制作一个 bash 函数来将其别名为git children

[alias]
    children = "!f(){ git rev-list --children \"$1\" | grep \" $(git show --format=format:\"%H\" \"$1\")\" | cut -f 1 -d ' '; }; f"

然后git children HEAD会给你所有 HEAD 后代的提交 ID。

于 2013-12-04T16:31:49.713 回答
1

不,不会有一个 git 命令。当您处于分离状态时,您所处的修订版可能有多个位置可供选择。有可能在那个版本中,您创建了多个分支,每个分支都有单独的提交。那么在这种情况下,您想要的下一个修订版是什么?

您需要让 git 知道您想要进行下一次提交的分支。这样 Git 就知道在哪里寻找下一次提交。

于 2013-12-04T16:31:59.513 回答
0

您需要找到 HEAD 的孩子并检查其中一个。请参阅在 Git 中检索特定提交的子提交列表以及如何在 git 中找到下一个提交?

于 2013-12-05T00:17:00.317 回答