reset
命令中是否有类似于--root
标志在rebase
命令中的等效选项?
git reset --root
假设我要将当前分支重置为第一个提交:我是否需要手动查找历史记录并找到该提交的哈希值,还是有一种简单的方法可以重置到第一个可用的提交?
reset
命令中是否有类似于--root
标志在rebase
命令中的等效选项?
git reset --root
假设我要将当前分支重置为第一个提交:我是否需要手动查找历史记录并找到该提交的哈希值,还是有一种简单的方法可以重置到第一个可用的提交?
根提交(可以有多个)是没有父级的提交。
这将找到当前提交的根提交(基本上,是“当前分支的根”,但即使使用分离的HEAD也可以工作):
git rev-list --max-parents=0 HEAD
这会找到所有分支上的根提交:
git rev-list --max-parents=0 --branches
当然你可以使用--tags
或--all
代替--branches
。
通常存储库中只有一个根,因此所有这些都会找到相同的版本,而rev-list
默认以适当的顺序打印修订版,所以manojlds' answer通常也可以工作。
编辑:当然,你必须向git reset
提供结果SHA-1。
git reset --hard `git rev-list --all | tail -1`
我没有在git reset
中找到方法,但您可以使用以下一行代码将存储库重置为初始提交:
git log --pretty=format:%H | tail -1 | xargs git reset
基本上使用 git log
找到第一个提交,然后使用 xargs
可以将其重置回去。
git reset HEAD^
看起来很傻。 - IQAndreasrev-list
可能是答案(尽管参数需要进行大量调整),所以这些链接是有帮助的,虽然并不完全相关。 - IQAndreas