检查HEAD(当你处于分离头状态时)的下一个(后来的时间)修订的最快方法是什么?
这应该是这样的:
git checkout HEAD~-1
但此命令不起作用。另外git log
,它不显示下一个修订版哈希。
我找到的唯一方法是:
git checkout master
git log
[find revision number]
git checkout <revnumber>
但看起来很慢。这是否有一个命令?
答案 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)