Git的。如何结账修改,这是在HEAD之后?

时间:2013-12-04 16:19:00

标签: git git-detached-head

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

这应该是这样的:

git checkout HEAD~-1

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

我找到的唯一方法是:

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

但看起来很慢。这是否有一个命令?

3 个答案:

答案 0 :(得分:3)

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

有可能存在已删除分支引用的子代提交(因此,这些是可以在下一个垃圾回收中修剪的提交),或者是一个或多个已存在的历史记录的子代提交分支。

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

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

答案 1 :(得分:1)

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

你需要让git知道你想要获得下一次提交的分支。所以Git知道在哪里寻找下一个提交。

答案 2 :(得分:0)