--root
命令的rebase
命令中是否有等同于reset
标志的内容?
git reset --root
假设我想重置为当前分支中的第一个提交:我是否必须手动挖掘历史记录并找到该提交的哈希值,或者是否有一种简单的方法可以重置为第一个可用的提交? / p>
答案 0 :(得分:4)
根提交(可以有多个)是没有父母的提交。
这会找到当前提交的根提交(基本上是“当前分支的根目录”,除非它在分离的HEAD中起作用):
git rev-list --max-parents=0 HEAD
这将查找所有分支上的所有root提交:
git rev-list --max-parents=0 --branches
当然,您可以使用--tags
或--all
代替--branches
。
通常,存储库中只有一个根,因此所有这些根目录都找到相同的版本,默认情况下rev-list
会以合适的顺序打印修订版,因此manojlds' answer通常也可以正常工作。
编辑:当然,您必须将生成的SHA-1提供给git reset
。
答案 1 :(得分:2)
这是一种方式:
git reset --hard `git rev-list --all | tail -1`
答案 2 :(得分:1)
我在git reset
内找不到方法,但您可以使用以下单行重置为回购的初始提交:
git log --pretty=format:%H | tail -1 | xargs git reset
基本上使用git log
查找第一个提交,然后使用xargs
您可以重置回来。