git reset中的模糊参数

时间:2012-10-15 16:44:00

标签: git version-control

我最近搞砸了git rebase -i,所以我想做一个git reset --hard HEAD@{5}

但是,执行git reset --hard HEAD@{5}git log HEAD@{5}会导致显示以下错误消息:

fatal: ambiguous argument 'HEAD@{5}': unknown revision or path not in the working tree.

然后,我决定指定与HEAD@{5}中显示的git reflog对应的哈希键。例如:

git reset --hard e8be841

这样做,是否有任何风险搞砸git存储库或做出意想不到的事情?

3 个答案:

答案 0 :(得分:7)

对我来说问题是我需要在 Windows命令提示符上加上双引号。

而不是:

git reset --soft 'HEAD^' 

我不得不写:

git reset --soft "HEAD^"

答案 1 :(得分:0)

Git对合并和重组的方式非常宽容。如果您在其中一个操作期间查看git存储库的文件结构,您将看到它改变了指定用于帮助这些操作的文件,并且不会不安全地更改核心对象。如果是这样,那就是一种附加的方式。

因此几乎没有机会对您的存储库造成任何损害。举个例子,拿另一个repo,制作副本,启动一个rebase,然后比较两者中的.git文件夹。

P.S。根据您对问题的评论,是的,请使用git rebase --abort

答案 2 :(得分:0)

Git有一些shell参数引用问题。

请尝试git log 'HEAD@{5}'

在我的情况下,我收到错误fatal: Log .git/logs/HEAD is empty.

下一个解决方法是:

git log HEAD^^^^^