什么是检查 HEAD 下一个(稍后)的修订版(当您处于分离的头部状态时)的最快方法是什么?
这应该是这样的:
git checkout HEAD~-1
但是这个命令不起作用。此外git log
,它不显示下一个修订哈希。
我发现的唯一方法是:
git checkout master
git log
[find revision number]
git checkout <revnumber>
但它看起来很慢。有一个命令吗?
什么是检查 HEAD 下一个(稍后)的修订版(当您处于分离的头部状态时)的最快方法是什么?
这应该是这样的:
git checkout HEAD~-1
但是这个命令不起作用。此外git log
,它不显示下一个修订哈希。
我发现的唯一方法是:
git checkout master
git log
[find revision number]
git checkout <revnumber>
但它看起来很慢。有一个命令吗?
在 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。
不,不会有一个 git 命令。当您处于分离状态时,您所处的修订版可能有多个位置可供选择。有可能在那个版本中,您创建了多个分支,每个分支都有单独的提交。那么在这种情况下,您想要的下一个修订版是什么?
您需要让 git 知道您想要进行下一次提交的分支。这样 Git 就知道在哪里寻找下一次提交。
您需要找到 HEAD 的孩子并检查其中一个。请参阅在 Git 中检索特定提交的子提交列表以及如何在 git 中找到下一个提交?