比方说,到目前为止,我已经做出了a, b, c, d
次提交。我目前在d
,现在想回到a
。
a
和d
在master
分支中。 b
和c
是temp
分支。
在这种情况下,如果我运行git reset --hard <a's commit>
,我会丢失提交b
和c
的原因,因为它们是在a
之后进行的吗?即使他们在另一个分支中,这是真的吗?
答案 0 :(得分:5)
如果您在temp
分支上运行reset
命令,则不会更改另一个分支(master
)的提交历史记录。
reset
命令实际上永远不会删除提交或更改您当前尚未检出的分支的内容。只是简单地移动HEAD
指针。
reflog是值得一提的非常有用的工具。每次创建提交(或更新分支的尖端)时,条目都会存储在reflog中。您可以使用git reflog
查看reflog的内容。
因此,如果您觉得自己已经“丢失”了提交,则可以在reflog中进行搜索,然后将其重新挑选。