命令 "git reset --hard <commit>" 是否删除另一个分支中的提交历史记录?
Does the command "git reset --hard <commit>" remove commit history in another branch?
假设我到目前为止做出了 a, b, c, d
次提交。我目前在 d
,我想回到 a
。
a
和 d
在 master
分支中。 b
和 c
是 temp
分支。
在这种情况下,如果我 运行 git reset --hard <a's commit>
,我会丢失提交 b
和 c
因为它们是在 a
之后提交的吗?即使他们在另一个分支也是真的吗?
如果您在 master
分支上 运行 您的 reset
命令,则不会更改另一个分支 (temp
) 的提交历史。
reset
命令实际上永远不会删除提交或更改您当前尚未签出的分支的内容。它只是简单地移动你的 HEAD
指针。
值得一提的一个非常有用的工具是reflog。每次创建提交(或更新分支的提示)时,都会在 reflog 中存储一个条目。您可以通过以下方式查看 reflog 的内容:git reflog
.
因此,如果您觉得自己有 "lost" 提交,您可以在 reflog 中搜索它,然后将其挑选回来。
假设我到目前为止做出了 a, b, c, d
次提交。我目前在 d
,我想回到 a
。
a
和 d
在 master
分支中。 b
和 c
是 temp
分支。
在这种情况下,如果我 运行 git reset --hard <a's commit>
,我会丢失提交 b
和 c
因为它们是在 a
之后提交的吗?即使他们在另一个分支也是真的吗?
如果您在 master
分支上 运行 您的 reset
命令,则不会更改另一个分支 (temp
) 的提交历史。
reset
命令实际上永远不会删除提交或更改您当前尚未签出的分支的内容。它只是简单地移动你的 HEAD
指针。
值得一提的一个非常有用的工具是reflog。每次创建提交(或更新分支的提示)时,都会在 reflog 中存储一个条目。您可以通过以下方式查看 reflog 的内容:git reflog
.
因此,如果您觉得自己有 "lost" 提交,您可以在 reflog 中搜索它,然后将其挑选回来。